Main Page | Class Hierarchy | Class List | File List | Class Members | File Members

IDSSObjectInfo Interface Reference

Inherited by IDSSObjectInfo2.

List of all members.


Detailed Description

The purpose of this interface is to support a set of useful properties and methods that are common to most data objects.

IDSSObjectInfo provides methods that are used to identify and describe the object. It is the usual interface that is passed around as a reference to the object.

Most of the methods in this interface return property value, like Name or CreationTime that are useful to support a browser interface. It also contains methods to perform common actions (like Refresh or Save) on object. Finally there are some housekeeping methods (like Children and Tag) that make the objects easier to use from a programming viewpoint.
By a data object we mean any object that can be persisted in metadata, and also in some cases parts of these objects. For example filters, templates, metrics, dimensions, facts, attributes are all data objects. But so is a sub expression in a filter or a metric. We expect that users and owners also support this interface, and there may be many more.


Public Member Functions

HRESULT Abbreviation ([in] BSTR Abbreviation)
 String to be used as an abbreviation for the object.
HRESULT Abbreviation ([out, retval] BSTR *pAbbreviation)
 String to be used as an abbreviation for the object.
HRESULT AccessGranted ([out, retval] EnumDSSAccessRightFlags *pAccessGranted)
 The set of access rights granted to the calling user for this object.
HRESULT AccessGrantedStr ([in, defaultvalue(0)] VARIANT_BOOL UseFullNames,[out, retval] BSTR *pAccessGrantedStr)
 A string representation of the AccessGranted property.
HRESULT Comments ([out, retval] IDSSComments ppComments)
 Collection of comment strings associated with the object.
HRESULT Copy ([in, defaultvalue(0)] IDSSFolder *pFolder,[in, defaultvalue("")] BSTR Name,[in, defaultvalue(0)] EnumDSSSourceFlags Flags,[out, retval] IDSSObjectInfo ppCopy)
 Make a copy of this object.
HRESULT CreationTime ([out, retval] DATE *pCreationTime)
 The time when this object was first created.
HRESULT Delete ()
 Delete this object from persistent storage.
HRESULT Dependents ([out, retval] IDSSDependents ppDependents)
 The collection of all ObjectIDs that appear in the object's definition.
HRESULT Description ([in] BSTR Description)
 A description string associated with the object.
HRESULT Description ([out, retval] BSTR *pDescription)
 A description string associated with the object.
HRESULT Embedded ([out, retval] IDSSEmbeddedFolder ppEmbedded)
 Special folder containing the objects embedded in this object.
HRESULT Errors ([out, retval] IDSSErrors ppErrors)
 A collection of errors associated with the object.
HRESULT Hidden ([in] VARIANT_BOOL Hidden)
 True if the object is marked as hidden in its folder.
HRESULT Hidden ([out, retval] VARIANT_BOOL *pHidden)
 True if the object is marked as hidden in its folder.
HRESULT ID ([out, retval] BSTR *pID)
 The ObjectID of this object (a GUID).
HRESULT InitialObject ([out, retval] IDSSObjectInfo ppInitialObject)
 If this object was created by copying, this is the object that it was copied from; otherwise, the object itself is returned.
HRESULT Load ([in] Int32 Flags,[in, defaultvalue(0)] IDSSUserRuntime *pUserRuntime,[in, defaultvalue(0)] Int32 Cookie,[in, defaultvalue(0)] Int32 UserData)
 Load in specified parts of the object.
HRESULT LoadFromXMLDOM ([in] IDispatch *pElement,[in, defaultvalue(DssSourceTotalObject)] EnumDSSSourceFlags Flags,[in, defaultvalue(0)] Int32 Level)
 Attempt to populate this object from a XML document.
HRESULT ModificationTime ([out, retval] DATE *pModificationTime)
 The time when the current definition of the object was persisted.
HRESULT Name ([in] BSTR Name)
 The name of the object.
HRESULT Name ([out, retval] BSTR *pName)
 The name of the object.
HRESULT Owner ([out, retval] IDSSUser ppUser)
 User who owns this object.
HRESULT Parent ([in] IDSSFolder *pParent)
 The folder that contains this object.
HRESULT Parent ([out, retval] IDSSFolder ppParent)
 The folder that contains this object.
HRESULT Path ([out, retval] BSTR *pPath)
 The (true) path to this object.
HRESULT PopulateObject (IDSSObjectInfo *pOriginal, Int32 Flags)
 Populate specified parts of this object from another one.
HRESULT Prompts ([out, retval] IDSSPrompts ppPrompts)
 The collection of prompt instances in this object.
HRESULT PropertySets ([out, retval] IDSSPropertyGroup ppPropertySets)
 Collection of property values bound on this object.
HRESULT Refresh ()
 Reload the object's definition from persistent storage.
HRESULT Save ()
 Save the object's current definition onto persistent storage.
HRESULT SaveToXMLDOM ([in] IDSSXMLContext *pXMLContext,[in, defaultvalue(0)] EnumDSSSourceFlags Flags,[in, defaultvalue(0)] Int32 Level,[in, defaultvalue(1)] Int32 BlockBegin,[in, defaultvalue(-1)] Int32 BlockCount,[out, retval] IDispatch ppElement)
 Write a representation of (part of) this object to an XML document.
HRESULT Security ([out, retval] IDSSObjectSecurity ppObjSecurity)
 Returns the interface that controls the security of the object.
HRESULT Source ([out, retval] IDSSSource ppSource)
 The IDSSSource interface used to obtain this object.
HRESULT Special ([out, retval] IDispatch ppSpecial)
 Return an interface with special methods for this object's type.
HRESULT State ([out, retval] EnumDSSObjectState *pState)
 The state of this instance of the object.
HRESULT SubType ([out, retval] EnumDSSSubTypes *pSubType)
 A more specific object type than the value returned by Type.
HRESULT Tag ([in] VARIANT *pTag)
 A non-persisted VARIANT property associated with the object.
HRESULT Tag ([out, retval] VARIANT *pTag)
 A non-persisted VARIANT property associated with the object.
HRESULT Type ([out, retval] EnumDSSObjectType *pType)
 The type of the object (value in an enumeration).
HRESULT Validate ([in, defaultvalue(0)]Int32 Flag)
 Check that this object is well formed.
HRESULT Version ([out, retval] BSTR *pVersion)
 The VersionID of the object (changed when it is persisted).


Member Function Documentation

HRESULT IDSSObjectInfo::Abbreviation [in] BSTR  Abbreviation  ) 
 

String to be used as an abbreviation for the object.

This is a persistent string property. The value of this property is the string that the client uses as an abbreviation for the object.

If the object is a User object, the abbreviation is the user login.
Parameters:
Abbreviation The string used as an abbreviation.
Returns:
Usual COM result code:
  • S_OK

HRESULT IDSSObjectInfo::Abbreviation [out, retval] BSTR *  pAbbreviation  ) 
 

String to be used as an abbreviation for the object.

This is a persistent string property. The value of this property is the string that the client uses as an abbreviation for the object.

If the object is a User object, the abbreviation is the user login.
Parameters:
pAbbreviation The string used as an abbreviation.
Returns:
Usual COM result code:
  • S_OK

HRESULT IDSSObjectInfo::AccessGranted [out, retval] EnumDSSAccessRightFlags pAccessGranted  ) 
 

The set of access rights granted to the calling user for this object.

Return the accesses granted on this instantiation of the object. These accesses take the form of a bit vector with each bit recording a different access right. They record which operations are permitted on this instantiation of the object. A typical operation is to read values from the object, write values to an object, or to execute a report containing this object.

The accesses shown will depend on the user that constructed the source that made this object. This property is read-only.
For a description of each of the access rights, see the IDSSAccessControlEntry::Rights property.
Parameters:
pAccessGranted The set of accesses available on this object. The accesses are presented as a bit vector.
Returns:
Usual COM result code:
  • S_OK

HRESULT IDSSObjectInfo::AccessGrantedStr [in, defaultvalue(0)] VARIANT_BOOL  UseFullNames,
[out, retval] BSTR *  pAccessGrantedStr
 

A string representation of the AccessGranted property.

This method returns a string representation of the AccessGranted property.

Parameters:
UseFullNames This property determines whether or not the full names of the access rights are returned.
pAccessGrantedStr If no access rights are granted, this contains the string, No Access. If all access rights are granted, then it contains, Full Access. Otherwise, it is a comma-separated list of access right names (either the full name or just the first letter).
Returns:
Usual COM result code:
  • S_OK

HRESULT IDSSObjectInfo::Comments [out, retval] IDSSComments   ppComments  ) 
 

Collection of comment strings associated with the object.

This persisted property returns a collection of comments. Each comment is a string value. The user can examine and alter this collection to annotate an object.

Parameters:
ppComments The collection of strings that appear as comments on the object. We expect to use the usual Visual Basic collection object to hold this collection.
Returns:
Usual COM result code:
  • S_OK

HRESULT IDSSObjectInfo::Copy [in, defaultvalue(0)] IDSSFolder pFolder,
[in, defaultvalue("")] BSTR  Name,
[in, defaultvalue(0)] EnumDSSSourceFlags  Flags,
[out, retval] IDSSObjectInfo   ppCopy
 

Make a copy of this object.

(Shortcut to CopyObject).. Make a copy of this object. This method is a shortcut to the CopyObject method on the object server. We permit the caller to provide a new name and folder for the new object. We provide the same Flags options as are available for CopyObject. However it is not possible to use Copy to make an asynchronous copy of the object.

Parameters:
pFolder The folder in which the copy should be placed. NULL creates the copy in Object Server cache without persisting it.
Name The name for the copy. NULL or empty string will append some standard string.
Flags Control the behavior of the copy
ppCopy A reference to the new object created by the Copy.
Returns:
Usual COM result code:
  • S_OK

HRESULT IDSSObjectInfo::CreationTime [out, retval] DATE *  pCreationTime  ) 
 

The time when this object was first created.

This is a persisted property of the object. It returns the time at which the object was created.

Parameters:
pCreationTime The time and date when the object was first created.
Returns:
Usual COM result code:
  • S_OK

HRESULT IDSSObjectInfo::Delete  ) 
 

Delete this object from persistent storage.

This method instructs the source to remove this object from persistent storage. It just relays the delete instruction to the current source. This call is likely to take a long time, since the server needs to check dependencies before it can perform the delete. It would probably make more sense for a client to delete an object by moving it to a special folder.

Note that this method does not delete the object from the client machine, since this would violate the COM convention that the only way for a client of an interface to release an interface is to call the interface's Release() method. The client should call Release() after calling Delete().
It is an error to attempt to call any method other that Release() on an object after it has been deleted. The object should return E_UNEXPECTED.
Returns:
Usual COM result code:
  • S_OK

HRESULT IDSSObjectInfo::Dependents [out, retval] IDSSDependents   ppDependents  ) 
 

The collection of all ObjectIDs that appear in the object's definition.

This persisted property returns a collection of all the ObjectIDs that appear in the definition of the object. Calling this method will load the definition of the object onto the client, if it was not already loaded.

This method is used by the DSS COM infrastructure to find out which objects an object's definition might refer to. It can use this information to pre-load the browser information for these objects onto the client before the client asks to see it.
The collection is read only. If a client retains a reference on the collection while changing the definition of an object, then it is implementation dependent if the collection reflects the changes made to the dependants of the objects.
Parameters:
ppDependents The dependents of the object, given as a collection of strings. This collection is accessed through the usual Visual Basic collection interface.
Returns:
Usual COM result code:
  • S_OK

HRESULT IDSSObjectInfo::Description [in] BSTR  Description  ) 
 

A description string associated with the object.

This is a persistent property of the object. It contains a user supplied string value that is associated with the object. We expect, but do not require, that this string is set as part of the process of defining the object.

Parameters:
Description The new description.
Returns:
Usual COM result code:
  • S_OK

HRESULT IDSSObjectInfo::Description [out, retval] BSTR *  pDescription  ) 
 

A description string associated with the object.

This is a persistent property of the object. It contains a user supplied string value that is associated with the object. We expect, but do not require, that this string is set as part of the process of defining the object.

Parameters:
pDescription The existing value of the description.
Returns:
Usual COM result code:
  • S_OK

HRESULT IDSSObjectInfo::Embedded [out, retval] IDSSEmbeddedFolder   ppEmbedded  ) 
 

Special folder containing the objects embedded in this object.

Embedded is a read-only embedded folder. If this object is being used as a container for other objects, then this folder contains the objects embedded in this object. If this object cannot be used as a container then there is no Embedded folder, and this property returns NULL.

There are several reasons why an object might not be used as a container:
  • Some objects are never allowed to be containers. For example DSS Folder and DSS Fact objects.
  • We do not want to permit a hierarchy of embedded objects. If an object is itself an embedded object, then we do not permit it to be a container. So in this case the Embedded property also returns NULL.
Observe that we return a special interface (IDSSEmbeddedFolder) not IDSSFolder. This interface is an extension of IDSSFolder with a few additional properties that are only used for embedded folders. The caller is at liberty to treat this interface as an IDSSFolder.
There is a slight inefficiency in calling get_Embedded to determine if a fully loaded object has embedded objects, since this forces the object to create an empty embedded folder. If the caller merely wished to determine if the object has embedded objects, then it is more efficient to examine the State bit DssStateContainer. This bit is set for non-empty containers. The bits value is not meaningful if the object was never loaded.
Parameters:
ppEmbedded A folder containing the objects embedded in this object. NULL if this object cannot be used as a container.
Returns:
Usual COM result code:
  • S_OK

HRESULT IDSSObjectInfo::Errors [out, retval] IDSSErrors   ppErrors  ) 
 

A collection of errors associated with the object.

Errors is a collection of IDSSErrorInfo objects that describes the errors that occurred during loading, transportation or validation of this DSS Object. The state flags DssStateError is an indication that this collection is not empty. Errors is a non-persistent property. Its content is lost once the object is reloaded from the repository.

Parameters:
ppErrors Pointer to receive the IDSSErrors object
Returns:
Usual COM result code:
  • S_OK

HRESULT IDSSObjectInfo::Hidden [in] VARIANT_BOOL  Hidden  ) 
 

True if the object is marked as hidden in its folder.

This is a persistent Boolean property. This property is true if the object is hidden inside the folder that contains it. Folder objects do not treat hidden objects any differently from normal objects. It is entirely up to the GUI to decide what use, if any, it makes of the hidden parameter.

Returns:
Usual COM result code:
  • S_OK

HRESULT IDSSObjectInfo::Hidden [out, retval] VARIANT_BOOL *  pHidden  ) 
 

True if the object is marked as hidden in its folder.

This is a persistent Boolean property. This property is true if the object is hidden inside the folder that contains it. Folder objects do not treat hidden objects any differently from normal objects. It is entirely up to the GUI to decide what use, if any, it makes of the hidden parameter.

Returns:
Usual COM result code:
  • S_OK

HRESULT IDSSObjectInfo::ID [out, retval] BSTR *  pID  ) 
 

The ObjectID of this object (a GUID).

The ID of an object uniquely defines it. The ID is assigned at the time of creation and is constant across the lifetime of the object. It is represented as a GUID in string format.

The ID of an object is often referred to as the object's ObjectID.
Parameters:
pID The ObjectID of this object.
Returns:
Usual COM result code:
  • S_OK

HRESULT IDSSObjectInfo::InitialObject [out, retval] IDSSObjectInfo   ppInitialObject  ) 
 

If this object was created by copying, this is the object that it was copied from; otherwise, the object itself is returned.

Parameters:
ppInitialObject Pointer to the object it copied from or itself.
Returns:
Usual COM result code:
  • S_OK

HRESULT IDSSObjectInfo::Load [in] Int32  Flags,
[in, defaultvalue(0)] IDSSUserRuntime pUserRuntime,
[in, defaultvalue(0)] Int32  Cookie,
[in, defaultvalue(0)] Int32  UserData
 

Load in specified parts of the object.

Load is a method. It instructs the object server to load parts of an object. It can be used in advance to load in parts of an object that the caller plans to use later. It can also be used to load dependents of the object into the object server's cache. This call cannot be used to Refresh an object. If a requested part of the object has already been loaded then the call does not reload that part of the object.

Parameters:
Flags Any combination of the DssSourceTotalObject flags. For example use DssSourceDefn to ensure the definition is loaded. Any combination of the DssSourceTotalDepn flags can also be used to instruct Object Server to load requested parts of all of this object's dependent objects into the object cache.
pUserRuntime User making the call.
Cookie Call back cookie if being used asynchronously.
UserData Passed back to caller on call back.
Returns:
Usual COM result code:
  • S_OK

HRESULT IDSSObjectInfo::LoadFromXMLDOM [in] IDispatch *  pElement,
[in, defaultvalue(DssSourceTotalObject)] EnumDSSSourceFlags  Flags,
[in, defaultvalue(0)] Int32  Level
 

Attempt to populate this object from a XML document.

This method modifies the object using an XML document. Any existing information in the object is overwritten. The XML is passed in using a DOM interface. Since the DSS Object might only be part of the XML document, we allow the user to pass in an XML element, rather than the entire document.

The Flags parameter can be used to exclude part of the DSS Object from being loaded, even if it is present in the XML document. It is not an error to attempt to load part of a DSS Object that is missing in the document.
See SaveToXMLDOM for the meaning of the enumeration.
Parameters:
pElement This in parameter can be one of two things: It is either: An XML element of the document from which we want to load the object. The root node of the document should point to the msi_item node for the object. The object should support the IXMLDOMElement interface. An XML Context whose document, parent and info nodes are correctly set. Using an XMLContext lets the API user specify things like locale when loading locale-sensitive information from XML (such as date strings).
Flags A bit vector of values from the DSSSource_Flags enumeration. If a bit is clear here then the corresponding part of the XML document is not loaded. Flags defaults to all bits set, so the default action is to load the entire XML document into the report instance.
Level Indicates whether or not dependent objects in the XML should also be loaded from the XML 0= Do not add in any dependent objects 1= Add in immediate dependencies 2= Add in second level dependencies (and so on for 2, 3, etc.) -1= Add in all dependencies
Returns:
Usual COM result code:
  • S_OK
  • E_INVALIDARG pElement may not be NULL
  • OBJSVR_E_BAD_XML The XML document was not a valid DSS Object

HRESULT IDSSObjectInfo::ModificationTime [out, retval] DATE *  pModificationTime  ) 
 

The time when the current definition of the object was persisted.

Return the time when a modified version of the object was last persisted. This property cannot be directly set. It is a persistent property.

Parameters:
pModificationTime The time and date when the object was last modified.
Returns:
Usual COM result code:
  • S_OK

HRESULT IDSSObjectInfo::Name [in] BSTR  Name  ) 
 

The name of the object.

This is a persistent string property. The value of this property is the name of the object. DSS COM will use the Name properties of objects when it constructs the Path property of an object. The name of the object is the final component of the path name of the object. We expect that an object browser also uses the name of the object for display purposes.

A project can set restrictions on the uniqueness of names in the project. See the NameScope property of IDSSSource.
Parameters:
Name The new value of the name of the object.
Returns:
Usual COM result code:
  • S_OK

HRESULT IDSSObjectInfo::Name [out, retval] BSTR *  pName  ) 
 

The name of the object.

This is a persistent string property. The value of this property is the name of the object. DSS COM will use the Name properties of objects when it constructs the Path property of an object. The name of the object is the final component of the path name of the object. We expect that an object browser also uses the name of the object for display purposes.

A project can set restrictions on the uniqueness of names in the project. See the NameScope property of IDSSSource.
Parameters:
pName The name currently in use for this object.
Returns:
Usual COM result code:
  • S_OK

HRESULT IDSSObjectInfo::Owner [out, retval] IDSSUser   ppUser  ) 
 

User who owns this object.

Owner is a read-only property. It returns the user that currently owns the object.

A caller cannot directly modify this property. However a user can attempt to take ownership of an object (i.e. make the caller into the object's owner). A caller does this by calling the TakeOwnership mothod on the IDSSObjectSecurity interface returned by get_Security.
Parameters:
ppUser The owner of this object. Should never be NULL
Returns:
Usual COM result code:
  • S_OK

HRESULT IDSSObjectInfo::Parent [in] IDSSFolder pParent  ) 
 

The folder that contains this object.

This property of an object is the folder that contains the object. Read it to determine which folder contains the object. Write to it to attempt to move the object to a different folder.

When reading this property, it ignores the concept of views. Regardless of how the object was obtained, reading the Folder property always returns a reference to the persisted folder that contains the object. This is the folder that is returned by looking up the ObjectID of the folder in the source.
The behavior of writing to the property is a little more complex. Since the client of the call must supply the target of the move in the form of a reference to an instance of a folder, the client is not only specifying a folder, but a particular view on it as well. If the move is successful then the object is written into the base folder that underlies the target folder. It is placed in the folder returned by pFolder.View.Base.
However the call does pay attention to the view of the target to the extent that it checks that the object passes the filtering restriction on the target. Even if the object would be placed in the base folder, the move is forbidden if the object cannot appear in the target folder instance. In other words a move is only permitted if following the move the object would be visible in the supplied target folder.
It is impossible to change which folder is the root folder of the folder hierarchy.
Parameters:
pParent The new parent of the folder. Cannot be NULL.
Returns:
Usual COM result code:
  • S_OK

HRESULT IDSSObjectInfo::Parent [out, retval] IDSSFolder   ppParent  ) 
 

The folder that contains this object.

This property of an object is the folder that contains the object. Read it to determine which folder contains the object. Write to it to attempt to move the object to a different folder.

When reading this property, it ignores the concept of views. Regardless of how the object was obtained, reading the Folder property always returns a reference to the persisted folder that contains the object. This is the folder that is returned by looking up the ObjectID of the folder in the source.
The behavior of writing to the property is a little more complex. Since the client of the call must supply the target of the move in the form of a reference to an instance of a folder, the client is not only specifying a folder, but a particular view on it as well. If the move is successful then the object is written into the base folder that underlies the target folder. It is placed in the folder returned by pFolder.View.Base.
However the call does pay attention to the view of the target to the extent that it checks that the object passes the filtering restriction on the target. Even if the object would be placed in the base folder, the move is forbidden if the object cannot appear in the target folder instance. In other words a move is only permitted if following the move the object would be visible in the supplied target folder.
It is impossible to change which folder is the root folder of the folder hierarchy.
Parameters:
ppParent The folder that contains this object. Return NULL if the object is the root folder of the source.
Returns:
Usual COM result code:
  • S_OK

HRESULT IDSSObjectInfo::Path [out, retval] BSTR *  pPath  ) 
 

The (true) path to this object.

This is a non-persistent string property. It returns a path from the root folder to this object. The path is not dependent on the view(s) that are in use on the client. In particular, virtual folders that were used to obtain the object will not show up on its path. If you wish to see an object's path in a particular view then you must use the PathToObject method on IDSSFolder.

This is a runtime property. The path is not persisted with the object, since it can be reconstructed from knowledge of the object's name and its folder.
In the interests of consistency the Path property has the same semantics for folders as it does for other types of objects. Even though an instance of a folder is created for each view of the folder, the Path property on the folder instance still ignores the view in which it is created.
Parameters:
pPath The path currently in use for this object.
Returns:
Usual COM result code:
  • S_OK

HRESULT IDSSObjectInfo::PopulateObject IDSSObjectInfo pOriginal,
Int32  Flags
 

Populate specified parts of this object from another one.

This method changes the contents of this object by copying another object into this object. A flags parameter is used to control which parts of the object should be copied.

Many of our type specific interface (IDSSFilter, IDSSTemplate etc.) have Populate methods. This method is the similar to those Populate methods except that: -
  • It uses IDSSObjectInfo for the original object, not IDSSFilter etc.
  • It can be used to copy over other parts of the object (e.g. the Name, Abbreviation etc.) that the simple Populate method does not copy. The simple Populate method is like this method with the DssSourceDefn flag.
The ID, security information, creation time, VersionID and Parent of the original object cannot be copied into this object, since they are part of the fundamental identity of this object.
Parameters:
pOriginal The original object. May not be NULL.
Flags Parts of the object that the caller wants to copy out. The DssSourceTotalObject bits are supported.
Returns:
Usual COM result code:
  • S_OK

HRESULT IDSSObjectInfo::Prompts [out, retval] IDSSPrompts   ppPrompts  ) 
 

The collection of prompt instances in this object.

This property is a collection property. The collection contains the prompt instances defined in this DSS Object. The user may populate the collection directly by its Add method, or indirectly by using prompt objects elsewhere in the application object.

Only DSS Objects that could contain prompts contain this collection. These are application level objects, including DSS Prompts themselves.
Parameters:
ppPrompts The collection of prompt instances in this DSS Object. NULL if this object is not able to hold prompts.
Returns:
Usual COM result code:
  • S_OK

HRESULT IDSSObjectInfo::PropertySets [out, retval] IDSSPropertyGroup   ppPropertySets  ) 
 

Collection of property values bound on this object.

This property returns a collection of PropertySet objects. Each property set is itself a collection of DSSProperty objects (interface IDSSProperty). We expose a property interface for each DSSProperty that could have an assigned value for this object. The IDSSProperty interface has properties that give information about the DSSProperty, and which also tell us what value, if any was assigned to the property.

If there are no properties available for this object, then this method returns an empty collection.
Parameters:
ppPropertySets The collection of property sets that contain properties defined for an object of this type.
Returns:
Usual COM result code:
  • S_OK

HRESULT IDSSObjectInfo::Refresh  ) 
 

Reload the object's definition from persistent storage.

This method instructs the source to throw away any cached information it has about this object. It is implementation dependent if this means that the entire object is automatically reloaded at this time or if it is only reloaded on demand. By using VersionIDs the implementation may determine that the instance on the client is up to date, in which case it takes no action.

The Refresh() method on an object is implemented by redirecting the call to the server.
Returns:
Usual COM result code:
  • S_OK

HRESULT IDSSObjectInfo::Save  ) 
 

Save the object's current definition onto persistent storage.

This method instructs the source to persistently store the current definition of this object. It does this, even if the object does not appear to have been modified since the last time that it was stored. Note that this method has nothing to do with which folder the object is located in. (This is because we don't really store objects inside folders.) If you wish to modify the location of the object you should set the Parent property.

The Save() method on an object is implemented by redirecting the call to the server.
Returns:
Usual COM result code:
  • S_OK

HRESULT IDSSObjectInfo::SaveToXMLDOM [in] IDSSXMLContext pXMLContext,
[in, defaultvalue(0)] EnumDSSSourceFlags  Flags,
[in, defaultvalue(0)] Int32  Level,
[in, defaultvalue(1)] Int32  BlockBegin,
[in, defaultvalue(-1)] Int32  BlockCount,
[out, retval] IDispatch   ppElement
 

Write a representation of (part of) this object to an XML document.

This method is used to obtain an XML (extensible mark up language) representation of DSS Object. It takes various parameters that modify how much of the object is written into the XML. This allows a user to write part of an object (e.g. the browse information) into XML without writing the full object.

The XML is held using the XML document object model (DOM). This is a standard set of interfaces that maintain an XML data structure as a tree. The user passes in the XML document. The report instance creates and returns an XML element, that is the root of the DSS Object. The caller needs to insert the element into the correct place in the document.
In some cases it makes sense to divide the type-specific part of a DSS Object into 'blocks'. We do this with object (e.g. folders) that are sometimes very large, and in which we want to quickly render a representation of the object. For example a partial folder might only contain some of its children. In many cases though there is no sensible way to break an object into blocks.
We also have a level parameter. This is used to embed dependent objects directly into the XML instead of just giving their ObjectID.
We use the normal DSSSource_Flags enumeration to specify which parts of the object we want to include in the XML. This enumeration has bits for the standard parts of the object.
We support the DssSourceDefn, DssSourceBrowser etc. flags. These indicate the part of the object itself we want to support. The DssSourceDepnDefn, DssSourceDepnBrowser etc. flags indicate which parts we want for dependent objects. Most of the other flags do not make sense for the SaveToXMLDOM method.
We have a few flags only used for this method.
Symbol Value Meaning
DssSourceSaveXmlFolder 0x1000000 A special case for folders. The Level parameter is only applied to dependent folders. If a folder's children is shown, then the folder is written out in full, regardless of the setting of the DssSourceDepnDefn bit.
Parameters:
pXMLContext An XML context object. This object is used to access the DOM document into which the data is written. It also contains other parameters like the locale and user identity.
Flags A bit vector of values from the EnumDSSObjectXmlFlags enumeration. These flags modify how much information is added to the XML. Set all the bits to obtain the entire DSS Object.
Level The depth of dependent objects to add to this object. 0 = Do not add in any dependent objects. 1 = Add in immediate dependencies. 2 = Add in second level dependencies (and so on for 2, 3, etc.). -1 = Add in all dependencies.
BlockBegin The first block that the user wants to see. 1 = start from the beginning of the result set. The parameter is ignored if BlockCount is 0.
BlockCount The size of the range of blocks that the user wants to see. 0 = do not break the XML into blocks.
ppElement The root node of the XML representation of the report instance. The interface is really IDOMElement. NULL if an error occurred.
Returns:
Usual COM result code:
  • S_OK
  • E_INVALIDARG pDocument may not be NULL.

HRESULT IDSSObjectInfo::Security [out, retval] IDSSObjectSecurity   ppObjSecurity  ) 
 

Returns the interface that controls the security of the object.

This read-only property returns an interface which controls the security of the object.

Parameters:
ppObjSecurity The interface which controls how the object is shared and accessed.
Returns:
Usual COM result code:
  • S_OK

HRESULT IDSSObjectInfo::Source [out, retval] IDSSSource   ppSource  ) 
 

The IDSSSource interface used to obtain this object.

This runtime property returns the IDSSSource interface that was used to instantiate this object. All of the calls on the object that need to use some resource that is not stored in the object is directed through the object's source.

This source is a read only property. The source of an object cannot be changed after the object has been created. (However a source can make a copy of an object from a different source. This means that we can appear to transfer an object to a different source.)
Parameters:
ppSource The source that instantiated this instance of the object.
Returns:
Usual COM result code:
  • S_OK

HRESULT IDSSObjectInfo::Special [out, retval] IDispatch   ppSpecial  ) 
 

Return an interface with special methods for this object's type.

This runtime property returns the main type-specific interface to this object. Since there are many different interfaces that could be returned by this call, the interface is actually returned as an IDispatch interface.

This property is not useful to the C++ programmer since he or she could query directly for the required interface. However it could be useful to a Visual Basic programmer who then uses run time binding to access type-specific methods of the object.
Parameters:
ppSpecial The type-specific interface on this object, returned as an IDispatch. For example on a filter it would return IDSSFilter.
Returns:
Usual COM result code:
  • S_OK

HRESULT IDSSObjectInfo::State [out, retval] EnumDSSObjectState pState  ) 
 

The state of this instance of the object.

This runtime property contains a bit vector of information about the run time status of the object. It records information about this particular instantiation of the object. For example it contains a dirty bit, that is a bit that is set if the object's persisted information has been modified since it was last loaded.

There is no set method for this property. It is altered to reflect other changes in the instantiation of the object.
We have an enumeration, DSSObjectInfo_State that records the meaning of each bit in the state. It contains at least the following values. More should be added if we discover other useful state characteristics.
Constant Value Comment
DssStateDefnLoaded 0x0001 Object-specific definition was loaded.
DssStateBrowserLoaded 0x0002 Object browser information was loaded.
DssStateDatesLoaded 0x0004 Modification time, etc. was loaded.
DssStateCommentsLoaded 0x0008 Object comments and description loaded.
DssStateDependentsLoaded 0x0010 Dependents of this object were loaded.
DssStatePropertiesLoaded 0x0020 Properties of this object were loaded.
DssStateSecurityLoaded 0x0040 Security information of this object was loaded.
DssStateTotalObjectLoaded 0x007F Bit-wise OR of all above flags to indicate the entire object is loaded
DssStatePersisted 0x000100 This bit is set if the object can be persisted to the source. An object that supports IDSSObjectInfo but which cannot be persisted, e.g. a node in an expression tree or a local object, keeps this bit clear.
DssStateDirty 0x000200 Object has changed from its persisted state
DssStateDeleted 0x000400 Object was deleted.
DssStateCorrupt 0x000800 Object is believed to be in a corrupt state and needs to be refreshed.
DssStateDependentsDirty 0x001000 Dependents of the object were modified
DssStateMissing 0x002000 Used by catalog objects to indicate missing tables or columns.
DssStateError 0x004000 One or more errors have occurred in loading, transporting or validating this object. Error messages can be access via Errors property.
DssStateEmbedded 0x008000 This object is embedded in another object.
DssStateContainer 0x010000 This object has at least one object embedded inside it. (This bit cannot be relied upon unless the DssStateDefnLoaded bit is also set.).
DssStateTemplateAppObjectDirty 0x100000 Used by Template to indicate the Application objects of the template were changed, Resolution sever need to be re-executed.
DssStateTemplateContentDirty 0x200000 Used by Template to indicate the content of a template has been changed, such as adding or removing axis, unit and metric. In this case, the Xtab data is no longer valid
DssStateTemplateStructureDirty 0x400000 Used by Template to indicate the structure of a template has been changed, such as pivoting unit. In this case, the XTabView is no longer valid.
Parameters:
pState The bit vector representing the current state of this instance of the object.
Returns:
Usual COM result code:
  • S_OK

HRESULT IDSSObjectInfo::SubType [out, retval] EnumDSSSubTypes pSubType  ) 
 

A more specific object type than the value returned by Type.

SubType is a read-only enumeration property. Every DSS Object has a DSS type. The Type property returns an enumeration value that indicates the type of a DSS Object. The type of an object is intrinsic to the object, and cannot be changed after the object has been created.

However, for some types of objects we have a natural subdivision of the object's type. For example, attributes are subdivided into four types of attributes: normal, role, transformation and abstract attributes. The subtype of an object provides all of the information of an object's Type property, and it also reveals the additional information.
Whereas an object's type cannot be changed, it is possible to change the subtype of an object. A user does this by calling some method on the type-specific interface of the object, since subtypes are dependent on the object's definition.
There are two reasons to use the subtype of an object:
  • An object's subtype is loaded as part of the browse information of an object. Thus a user can (for example) distinguish between normal tables and partitioned tables without loading a table's definition.
  • A search can be specified for an object by SubType. This allows a user (for example) to retrieve all 'select objects' prompts.
A user can convert a SubType into a type by performing integer division by 256. Quaintly, Visual Basic uses \ as its integer division operator so in Visual Basic we have that
Info.Type = Info.SubType \ 256
The following table shows the complete subtype enumeration.
Constant Value Use of object
DssSubTypeUnknown -1 Type of object is not specified
DssSubTypeReserved 0 Never a valid subtype
DssSubTypeFilter 0x0100 A filter that is being used as a filter
DssSubTypeCustomGroup 0x0101 A filter that is being used as a custom group
DssSubTypeTemplate 0x0200 Same as DSS Type
DssSubTypeReportGrid 0x0300 Report that is displayed as a grid
DssSubTypeReportGraph 0x0301 Report that is displayed as a graph
DssSubTypeReportEngine 0x0302 Report that is displayed as SQL
DssSubTypeReportText 0x0303 Report that is displayed as text
DssSubTypeMetric 0x0400 A normal metric
DssSubTypeSubtotalDefinition 0x0401 A metric that is used to define a subtotal
DssSubTypeAggMetric 0x0700 Same as DSS Type
DssSubTypeFolder 0x0800 Same as DSS Type
DssSubTypePrompt 0x0a00 Prompt whose type has not been specified
DssSubTypePromptBoolean 0x0a01 Prompt for a Boolean
DssSubTypePromptLong 0x0a02 Prompt for an integer
DssSubTypePromptString 0x0a03 Prompt for a character string
DssSubTypePromptDouble 0x0a04 Prompt for floating point number
DssSubTypePromptDate 0x0a05 Prompt for a date or time
DssSubTypePromptObjects 0x0a06 Prompt for one or more DSS Objects
DssSubTypePromptElements 0x0a07 Prompt for one or more attribute elements
DssSubTypePromptExpression 0x0a08 Prompt for an entire expression
DssSubTypePromptExpressionDraft 0x0a09 Prompt to fill in gaps in a draft expression
DssSubTypeFunction 0x0b00 Same as DSS Type
DssSubTypeAttribute 0x0c00 Ordinary attribute
DssSubTypeAttributeRole 0x0c01 Attribute formed as a role of another attribute
DssSubTypeAttributeTransformation 0x0c02 Transformation of attribute (Last year etc.)
DssSubTypeAttributeAbstract 0x0c03 Attribute only used as base of role / transform.
DssSubTypeFact 0x0d00 Same as DSS Type
DssSubTypeDimensionSystem 0x0e00 A system dimension (used to hold schema)
DssSubTypeDimensionUser 0x0e01 User dimension (mostly used on template)
DssSubTypeDimensionOrdered 0x0e02 Ordered user dimension
DssSubTypeDimensionUserHierarchy 0x0e03 A dimension used to browse elements
DssSubTypeTable 0x0f00 Usual logical table
DssSubTypeTablePartitionMD 0x0f01 Table with partition stored in metadata
DssSubTypeTablePartitionWH 0x0f02 Table with partition stored in warehouse
DssSubTypeFactGroup 0x1100 Same as DSS Type
DssSubTypeResolution 0x1300 Same as DSS Type
DssSubTypeAttributeForm 0x1500 Same as DSS Type
DssSubTypeFormSystem 0x1501 Attribute form shared across attributes
DssSubTypeFormNormal 0x1502 Attribute form used by one attribute
DssSubTypeSchema 0x1600 Same as DSS Type
DssSubTypeCatalog 0x1800 Same as DSS Type
DssSubTypeCatalogDefn 0x1900 Same as DSS Type
DssSubTypeColumn 0x1a00 Same as DSS Type
DssSubTypePropertyGroup 0x1b00 Same as DSS Type
DssSubTypePropertySet 0x1c00 Same as DSS Type
DssSubTypeDBRole 0x1d00 Same as DSS Type
DssSubTypeDBLogin 0x1e00 Same as DSS Type
DssSubTypeDBConnection 0x1f00 Same as DSS Type
DssSubTypeProject 0x2000 Same as DSS Type
DssSubTypeServerDef 0x2100 Same as DSS Type
DssSubTypeUser 0x2200 A user object that represents a single user
DssSubTypeUserGroup 0x2201 A user object that is a group of users
DssSubTypeConfiguration 0x2400 Same as DSS Type
DssSubTypeRequest 0x2500 Same as DSS Type
DssSubTypeSearch 0x2700 Same as DSS Type
DssSubTypeSearchFolder 0x2800 Same as DSS Type
DssSubTypeFunctionPackageDefinition 0x2a00 Same as DSS Type
DssSubTypeRole 0x2b00 Role that is used to define one attribute as being similar to another attribute
DssSubTypeRoleTransformation 0x2b01 Role used to transform an attribute
DssSubTypeSecurityRole 0x2c00 Same as DSS Type
DssSubTypeInBox 0x2d00 Same as DSS Type
DssSubTypeInBoxMsg 0x2e00 Same as DSS Type
DssSubTypeConsolidation 0x2f00 Same as DSS Type
DssSubTypeConsolidationElement 0x3000 Same as DSS Type
DssSubTypeScheduleEvent 0x3100 Same as DSS Type
DssSubTypeScheduleObject 0x3200 Same as DSS Type
DssSubTypeScheduleTrigger 0x3300 Same as DSS Type
DssSubTypeLink 0x3400 Same as DSS Type
DssSubTypeDBTable 0x3500 Normal physical table on some database
DssSubTypeDBTablePMT 0x3501 A partition mapping table on database
DssSubTypeTableSource 0x3600 Same as DSS Type
DssSubTypeDocumentDefinition 0x3700 Same as DSS Type
DssSubTypeDrillMap 0x3800 Same as DSS Type
DssSubTypeDBMS 0x3900 Same as DSS Type
DssSubTypeMDSecurityFilter 0x3a00 Same as DSS Type
Parameters:
pSubType The SubType of the object
Returns:
Usual COM result code:
  • S_OK

HRESULT IDSSObjectInfo::Tag [in] VARIANT *  pTag  ) 
 

A non-persisted VARIANT property associated with the object.

This runtime property contains a VARIANT value. It is not used by DSS COM. Its purpose is to allow a client to annotate an instance of a DSS COM object by storing a value on it. Since the tag value is not persisted, a client could use it to store a pointer.

This value is stored on a by-instance basis. Two different instances for the same object have different tags. For example in report execution we make a second instance of some of the objects in the report. These instances have different tag values.
Parameters:
pTag The new value for the tag on this instance.
pTag The tag attached to this instance.
Returns:
Usual COM result code:
  • S_OK

HRESULT IDSSObjectInfo::Tag [out, retval] VARIANT *  pTag  ) 
 

A non-persisted VARIANT property associated with the object.

This runtime property contains a VARIANT value. It is not used by DSS COM. Its purpose is to allow a client to annotate an instance of a DSS COM object by storing a value on it. Since the tag value is not persisted, a client could use it to store a pointer.

This value is stored on a by-instance basis. Two different instances for the same object have different tags. For example in report execution we make a second instance of some of the objects in the report. These instances have different tag values.
Parameters:
pTag The new value for the tag on this instance.
pTag The tag attached to this instance.
Returns:
Usual COM result code:
  • S_OK

HRESULT IDSSObjectInfo::Type [out, retval] EnumDSSObjectType pType  ) 
 

The type of the object (value in an enumeration).

Type is a read-only enumeration property. It returns the DSS Type of the object. In other words it returns an enumeration constant that represents whether this object is a DSS Template, a DSS Fact etc.

The type of a DSS Object is intrinsic to the object. It must be stated before an object is created, and cannot be changed after an object's creation. The FindObject method of the object server requires the user to know the type of the requested object.
In theory it would be possible to determine the type of an object by repeatedly requesting for type-specific interfaces (IDSSTemplate, IDSSFact etc.) until finding an interface that the object supports. Examining the type property is a much more reasonable way to discover an object's type.
The following table shows the values of the type enumeration. This is a complete list of all the possible types of DSS Objects.
Constant Value Use of object
DssTypeUnknown -1 Type of object is not specified
DssTypeReserved 0 This value is never used, and all functions should check that zero(0) never pass for a type.
DssTypeFilter 1 A restriction on the data in the warehouse
DssTypeTemplate 2 The layout of a report
DssTypeReportDefinition 3 Describes a report that can be executed
DssTypeMetric 4 A formula to be evaluated at a specific dimensionality
5 Unused
6 Unused
DssTypeAggMetric 7 A formula to be evaluated at any dimensionality
DssTypeFolder 8 A collection of objects
9 Unused
DssTypePrompt 10 A method to prompt the user for information
DssTypeFunction 11 A function that can be used to build expressions
DssTypeAttribute 12 A natural grouping of data ('City', 'Year' etc.)
DssTypeFact 13 A value that can be read directly from the warehouse
DssTypeDimension 14 A grouping of related attributes
DssTypeTable 15 A logical table
16 Unused
DssTypeFactGroup 17 A collection of related facts
DssTypeShortcut 18 Contains a reference to another DSS Object
DssTypeResolution 19 A collection of answers to prompts
20 Unused
DssTypeAttributeForm 21 Represents a value on elements of an attribute
DssTypeSchema 22 Collection of objects that define the warehouse structure
DssTypeFindObject 23 (Deprecated) Describes a simple search
DssTypeCatalog 24 List of (relevant) tables in a database
DssTypeCatalogDefn 25 Describes how to construct a catalog
DssTypeColumn 26 The properties needed to define a column of a DB table
DssTypePropertyGroup 27 (Internal object) Used to cache lists of property sets
DssTypePropertySet 28 Holds the definition of a property set
DssTypeDBRole 29 Represents a logical database
DssTypeDBLogin 30 Describes how to login to a database
DssTypeDBConnection 31 Describes how to connect to a database
DssTypeProject 32 A environment in which to perform OLAP analysis
DssTypeServerDef 33 A description of a configuration of a DSS Server
DssTypeUser 34 Represents a user or group of users of the system
35 Unused
DssTypeConfiguration 36 Top level object - represents a Castor installation
DssTypeRequest 37 Describes a DSS Server request (to be scheduled later)
38 Unused
DssTypeSearch 39 Describes criteria that specify a search for objects
DssTypeSearchFolder 40 Folder-like object used to store result of a search
41 Unused
DssTypeFunctionPackageDefinition 42 Describes a package of functions
DssTypeRole 43 Placeholder to describe way of extending an attribute
DssTypeSecurityRole 44 Holds privileges of a user that plays a certain role
DssTypeInBox 45 Shortcut to a folder
DssTypeInBoxMsg 46 Describes an uncollected report on a DSS Server
DssTypeConsolidation 47 Collection of consolidation elements
DssTypeConsolidationElement 48 Arithmetic expression over elements
DssTypeScheduleEvent 49 An event that can trigger a scheduled report
DssTypeScheduleObject 50 Something that can be triggered
DssTypeScheduleTrigger 51 Binding between schedule event and object
DssTypeLink 52 Holder of a property that spans objects
DssTypeDBTable 53 A physical table in a database
DssTypeTableSource 54 Physical tables with same suffix and prefix
DssTypeDocumentDefinition 55 An document built from reports and HTML text
DssTypeDrillMap 56 Describes a set of possible drill paths
DssTypeDBMS 57 Holds information about a type of physical database
DssTypeMDSecurityFilter 58 Holds filter restrictions that can be applied to a user
Parameters:
pType The object's type represented by an enumeration value.
Returns:
Usual COM result code:
  • S_OK

HRESULT IDSSObjectInfo::Validate [in, defaultvalue(0)] Int32  Flag  ) 
 

Check that this object is well formed.

Reserved method. Not currently implemented.

Returns:
Usual COM result code:
  • S_OK

HRESULT IDSSObjectInfo::Version [out, retval] BSTR *  pVersion  ) 
 

The VersionID of the object (changed when it is persisted).

This persisted property contains an identifier that represents the version of the persistent information in this object. If the object has not been changed in any way, this will be the same each time it is called across time and persistence. If any changes have been made to the object, then a new Version will be returned. The version allows for efficient verification of an object across a low bandwidth connection. Since the version is stored as a GUID, two components can confirm the presence and consistency of an object by passing only it's Version.

The Version is held as a text representation of a GUID in standard format (2AA835B2-EEE6-11D0-88C8-0x0080C0x710618A).
Assumed implementation is that if any changes have been made to the object, an internal flag is set. Only when the Version property is used or persisted, a new Version is generated.
Parameters:
pVersion The VersionID of this instance of the object. If the object has been modified since the VersionID was last read, then the object generates a fresh GUID.
Returns:
Usual COM result code:
  • S_OK


Copyright © 1996-2018 MicroStrategy Inc. All Rights Reserved.