%DeepSee.Utils
class %DeepSee.Utils extends %Library.RegisteredObject
This class contains a number of DeepSee utility methods.Method Inventory
- %AddHijriTimeInterval()
- %AddTimeInterval()
- %Analyze()
- %AnalyzeMissing()
- %ArrayFromList()
- %ArrayToList()
- %AtScaleExportCube()
- %BuildCube()
- %BuildDimensionTableIndices()
- %BuildStatus()
- %CheckPrivilege()
- %CompressIndices()
- %ComputeAge()
- %ComputeAggregateCombos()
- %ComputeAggregateGroup()
- %ComputeCellCache()
- %ConvertDate()
- %CreateParameterNonce()
- %CreateQueryNonce()
- %CubeExists()
- %DayOfWeekToNumber()
- %DaysInMonth()
- %DeleteFact()
- %DeleteNamedFilter()
- %DeletePivotVariable()
- %DeleteSharedCalcMember()
- %DenormalizeType()
- %ExcelFormatDate()
- %ExecutePivot()
- %ExportCSVToFile()
- %ExportExcelToFile()
- %ExportPDFToFile()
- %FilterSpecToArray()
- %FindCubeMembers()
- %FixBuildErrors()
- %FormatDate()
- %FormatPartialDate()
- %GetAgentCount()
- %GetBaseCube()
- %GetChildSpec()
- %GetCollectionProjections()
- %GetCountCaption()
- %GetCountName()
- %GetCubeActionClass()
- %GetCubeCaption()
- %GetCubeClass()
- %GetCubeDSTime()
- %GetCubeDescription()
- %GetCubeFactClass()
- %GetCubeFactCount()
- %GetCubeFactTable()
- %GetCubeLevels()
- %GetCubeList()
- %GetCubeListingFields()
- %GetCubeListings()
- %GetCubeMeasures()
- %GetCubeMemberCount()
- %GetCubeModifiedDate()
- %GetCubeName()
- %GetCubeSearchableMeasures()
- %GetDashboardList()
- %GetDataSourceTree()
- %GetDefaultHierarchy()
- %GetDefaultLevel()
- %GetDefaultMeasure()
- %GetDefaultMember()
- %GetDependencyGraph()
- %GetDimensionCaption()
- %GetDimensionFact()
- %GetDimensionInfo()
- %GetDimensionList()
- %GetDimensionMembers()
- %GetDimensionProperties()
- %GetDimensionSpec()
- %GetDimensionTables()
- %GetErrorPageURL()
- %GetFunctionList()
- %GetFunctionSet()
- %GetKPICaption()
- %GetKPIClass()
- %GetKPIDescription()
- %GetKPIList()
- %GetKPIModifiedDate()
- %GetKPIName()
- %GetKPIPlugInList()
- %GetLevelNameForKey()
- %GetMDXFromPivot()
- %GetMeasureFact()
- %GetMemberCaption()
- %GetMemberDescription()
- %GetMemberTree()
- %GetMetricList()
- %GetModel()
- %GetNamedFilterInfo()
- %GetNamedFilters()
- %GetParameterNonce()
- %GetPivotList()
- %GetPivotTree()
- %GetPivotVariableInfo()
- %GetPivotVariableValues()
- %GetPivotVariables()
- %GetQualityMeasureTree()
- %GetRelatedCube()
- %GetResultSetFromPivot()
- %GetSQLColumnName()
- %GetSQLTableName()
- %GetSharedCalcMemberInfo()
- %GetSharedCalcMembers()
- %GetSourceClass()
- %GetSubjectAreaModel()
- %GetTimeLevelCalendar()
- %GetTimeLevelClasses()
- %GetTimeLevelType()
- %GetWorksheetList()
- %HasUpdates()
- %HijriDaysInMonth()
- %IsCubeAbstract()
- %IsCubeAvailable()
- %IsCubeCompound()
- %IsDataConnector()
- %IsDeepSeeEnabled()
- %IsFactEnabled()
- %IsHijriLeapYear()
- %IsKPIPublic()
- %IsLeapYear()
- %IsRelationship()
- %IsValidCubeName()
- %IsValidFactList()
- %KPIExists()
- %KillCube()
- %KillKPICacheForCube()
- %LoadCellCache()
- %LockFactList()
- %LogBuildError()
- %MarkFactsEnabled()
- %MemberHasChildren()
- %NormalizeFactList()
- %ParseKeyForDisplay()
- %ParseRangeExpression()
- %ParseSQLFieldList()
- %PrecomputeAggregates()
- %PrintBuildErrors()
- %ProcessFact()
- %PurgeDSTIME()
- %PurgeListings()
- %PurgeUpdateBuffer()
- %Reset()
- %RunServerAuditCode()
- %RunServerCloseCode()
- %RunServerInitCode()
- %SaveNamedFilter()
- %SavePivotVariable()
- %SaveSharedCalcMember()
- %SetAgentCount()
- %SetCubeDSTime()
- %SetDSTimeIndex()
- %Shell()
- %SynchronizeCube()
- %TestTimeClass()
- %UnformatDate()
- %UnformatPartialDate()
- %UnlockFactList()
- %UpdateDimensionProperty()
- %WriteDependencyGraph()
- GetResourceList()
Parameters
Methods
The interval is of the form "99y99m99d" (years, months, and days). There can be a leading minus sign.
The interval is of the form "99y99m99d" (years, months, and days). There can be a leading minus sign.
pCubeName is the name of the cube.
pFlags is a set of flags that can control what is analyzed: flags include "i" (include indices), "f" (include facts), "c" (include cell cache). The default is "i".
pVerbose indicates that status information is to be displayed while the analysis is done.
pCubeName is the name of the cube.
If a calendar has been created to support time dimensions in the AtScale environment, that can be passed in via pCalendar using either table or class reference syntax.
This will delete any information currently in the cube.
pAsync controls whether DeepSee performs the build in multiple background processes. If this argument is true, the system uses multiple processes and does not return until they are all complete. If this argument is false, the system uses a single process and does not return until it is complete.
If you have specified initialBuildOrder, the system will reset the value of pAsync to 0 and use a single process to build the cube. The presence of initialBuildOrder in the cube definition will override this setting and will force pAsync=0. The parameter may be passed by reference to communicate to the caller whether or not this override has taken place.
When a limit is imposed on background agents for a particular namespace using %SetAgentCount(), only one build may be active at a time in that namespace. This will not have any effect on behavior of builds in other namespaces.
If pVerbose is true, then status information is written to the console.
If pIndexOnly is true, only rebuild the fact table indices.
If pMaxFacts is non-zero, then only build this number of facts.
pTracking is an internal argument used when this method is run in the background and specifies that status information should be stored.
pBuildStatistics returns an array of information about the cube build.
The array has four subscripts. For example, if tStats is the argument used, as in:
do ##class(%DeepSee.Utils).%BuildCube("PATIENTS",1,,,,,.tStats) the array will look like the following:
tStats("elapsedTime")=10.000643
tStats("errors")=1
tStats("factCount")=5000
tStats("missingReferences")=1
If the pFactList is supplied the build will only update the columns listed in that fact list. The list must consist of the specific fact names and can have either a comma-delimited or $LB format. If this list is supplied, the specific facts being updated will be individually marked as unavailable for queries and queries referencing dimensions based on those facts will throw an error on prepare.
pCombo(n) = "FactName1,FactName2,MsrName1"
Set pGroupName to "*" for all groups.
pDateType indicates the incoming date format.
pDayName: full day name (e.g. Monday) or day short name (e.g. Mon)
pFullName: If true pDayName is the full day name: if false, pDayName is the short day name
pLocale: if not specified, default to current locale.
This method logs current time as the cube's last data update but does not advance the cube's DSTIME timestamp.
pParms controls the content and display of the export.
pParms("TITLE") = title
pParms("SUBTITLE") = subtitle
pParms("SHOWDATE") = "on" (includes current date and time in the export) pParms("SIMPLE") = 1 (exports only the data table without any filter or title information)
Data export should rely on either a base MDX query or an available KPI.
pParms("MDX") = MDX Statement to execute
pParms("KPI") = KPI class name
Exports operating in MDX mode expect filter clauses to be included in the query. When filters are being applied to the KPI class, they may be provided in the array:
pParms("FILTER",filterName) = filterValue
Filters can optionally be included as a printed table in the export, provided by the FILTERNAMES and FILTERVALUES parameters:
pParms("FILTERNAMES") = A $C(10)-delimited list of filter names to display
pParms("FILTERVALUES") = A $C(10)-delimited list of filter values to display
Defined listings can be applied to a resultset using:
pParms("LISTINGNAME") = Name of a listing to execute.
A KPI must support use of a named listing or else this will be ignored. An MDX query must be in DRILLTHROUGH mode and the cube must have that listing defined for the listing to be applied.
pParms controls the content and display of the export.
pParms("TITLE") = title
pParms("SUBTITLE") = subtitle
pParms("SHOWDATE") = "on" (includes current date and time in the export)
Data export should rely on either a base MDX query or an available KPI.
pParms("MDX") = MDX Statement to execute
pParms("KPI") = KPI class name
Exports operating in MDX mode expect filter clauses to be included in the query. When filters are being applied to the KPI class, they may be provided in the array:
pParms("FILTER",filterName) = filterValue
Filters can optionally be included as a printed table in the export, provided by the FILTERNAMES and FILTERVALUES parameters:
pParms("FILTERNAMES") = A $C(10)-delimited list of filter names to display
pParms("FILTERVALUES") = A $C(10)-delimited list of filter values to display
Defined listings can be applied to a resultset using:
pParms("LISTINGNAME") = Name of a listing to execute.
A KPI must support use of a named listing or else this will be ignored. An MDX query must be in DRILLTHROUGH mode and the cube must have that listing defined for the listing to be applied.
pParms controls the content and display of the export.
pParms("TITLE") = title
pParms("SUBTITLE") = subtitle
pParms("SHOWDATE") = "on" (includes current date and time in the export)
Data export should rely on either a base MDX query or an available KPI.
pParms("MDX") = MDX Statement to execute
pParms("KPI") = KPI class name
Exports operating in MDX mode expect filter clauses to be included in the query. When filters are being applied to the KPI class, they may be provided in the array:
pParms("FILTER",filterName) = filterValue
Filters can optionally be included as a printed table in the export, provided by the FILTERNAMES and FILTERVALUES parameters:
pParms("FILTERNAMES") = A $C(10)-delimited list of filter names to display
pParms("FILTERVALUES") = A $C(10)-delimited list of filter values to display
Defined listings can be applied to a resultset using:
pParms("LISTINGNAME") = Name of a listing to execute.
A KPI must support use of a named listing or else this will be ignored. An MDX query must be in DRILLTHROUGH mode and the cube must have that listing defined for the listing to be applied.
Utility method to retrieve pMaxResults cube members based on a simple search key. By default, this
method will return normal cube members only, but a range of flags serve to indicate which type
of results to return on top, as long as they match the search key (level names, measure
names or computed members).
Members are returned as
pMembers(n) = $lb(Caption, Spec, ["measure"|"level"|"member"])
Use pDimList to limit the search scope to those dimensions, hierarchies or levels listed in this comma-separated list of specs.
This method does not return "all" levels, nor will it check cube relationships.
The format string can contain:
"y" - Year number (4 digits).
"q" - Quarter number.
"m" - Month number, with no leading zero.
"mm" - Month number, with leading zero.
"mmm" - Short name of month (using server locale).
"mmmm" - Long name of month (using server locale).
"d" - Day number, with no leading zero.
"dd" - Day number, with leading zero.
"ddd" - Short name of day (using server locale).
"dddd" - Long name of day (using server locale).
"\x" - display character "x"
" " - space
"/" - "/"
"-" - "-"
"." - "."
The format string can contain:
"y" - Year number (4 digits).
"q" - Quarter number.
"m" - Month number, with no leading zero.
"mm" - Month number, with leading zero.
"mmm" - Short name of month (using server locale).
"mmmm" - Long name of month (using server locale).
"d" - Day number, with no leading zero.
"dd" - Day number, with leading zero.
"ddd" - Short name of day (using server locale).
"dddd" - Long name of day (using server locale).
"\x" - display character "x"
" " - space
"/" - "/"
"-" - "-"
"." - "."
Missing pieces are replaced with the localized text "Unknown".
- "build" - number of agents that will be requested for a single worker group performing cube build tasks
- "runTime" - number of agents that will be requested for queries and processing of user code such as KPIs
- "buildMax" - the maximum number of agents that can be active for build tasks
- "runTimeMax" - the maximum number of agents that can be active for user tasks
On return pLevels contains a list of all levels of the form:
pLevels(n) = $LB(type,dimName,hierName,levelName)
Type is "l" for level, "m" for measure (in which case there is no levelName) or "r" for relationship (in which case there is only a dimension name).
If pSkipAll is true, do not return any "all" levels.
If pSkipComputed is true, do not return any levels for computed dimensions.
This array takes the form:
pList(NAME) = $LB(name,caption,moddate,type)
pType, if defined, can be "cubes" or "subjectAreas". This will limit the returned list to those item types.
pNonAbstract, if true, limits the returned items to non-abstract cubes.
pBaseCube, if provided, limits the returned items to the base cube and its descendants.
If there are no cubes, then pList will be undefined.
pListings(name) = $LB(caption,expression)
If there are no listing fields, then pFields will be undefined.
pListings(name) = $LB(caption,fields,order,type,source,edit)
If there are no listings, then pListings will be undefined.
If pType is defined, then only return listings of the given type.
pMeasures(n) = $LB(name,caption,type,hidden,factName)
If pSkipCalculated is true, then do not include calculated measures.
pMeasures(n) = $LB(name,caption,type)
This list takes the form:
pList(NAME) = $LB(name,caption,moddate,type)
pRoot is used to specify that an incremental load of children is requested; if provided it is the spec of a parent node.
Note: this is no longer used by DeepSee.
pCubeName is the name of the cube.
pSpec specifies the dimension in the form: "Dim.Hier.Level" or "Dim.Hier.Level.member".
If pStrict is false, then find a level: Hier or Level can be omitted if they are not ambiguous.
pSpecInfo is the array produced by parsing pSpec. This is returned as a convenience.
pLocalCalcMembers is an optional list of locally defined calculated members. pLocalNamedSets is an optional list of locally defined named sets.
On return, pInfo will contain array of the form:
pInfo(DimNo,HierNo,LevelNo) = $LB(type,DimName,HierName,LevelName)
type can be "d","h","l","m","r" or "all" for dimension, hierarchy, level, measure, relationship or all level.
Note that all measures are found under DimNo 0 and have no LevelName. Dimensions whose name starts with "%" are not listed.
Dimensions that only contain calculated members are returned as:
pInfo(-1,hierNo,memberNo)
If pUseInFilter is true, then only return levels whose useInFilter flag is true.
If pExtendedInfo is true, also return $LB(factNumber, factID, SQL column ID, isEnabled, inProgress) settings.
pCubeName is the name of the cube.
pSpec specifies the dimension in the form: "Dim.Hier.Level".
pContext is used to indicate a particular calling context. This affects the behavior when trimming the list of members using related filters.
The list is returned via pMembers. This takes the form:
pMembers(n) = $LB(value,name,memberId,memberKey,[description])
Return the member class as a convenience.
If pRelatedFilters is provided, it is an array of other filter values to use to restrict the set of members. It takes the form:
pRelatedFilters(spec) = key
If pCalcMode is 1, then only return calculated members. If pCalcMode is -1, then only return non-calculated members.
pProperties(n) = $LB(name,caption,type)
If pAsTree is true, return a format that a tree control can consume.
The list is of the form list(NAME) = $LB(class,name,specparsed,return).
This method is not currently used. [Previously private]
This list takes the form:
pList(NAME) = $LB(name,caption,moddate,type)
This is used by utilities.
This list takes the form:
pList(NAME) = $LB(name,caption,moddate,type)
pList(NAME,"props",propName) = ""
pCubeName is the name of the cube.
pSpec specifies the dimension in the form: "Dim.Hier.Level".
pKey is a key value. This may include the &[] around the key value.
pValue is the returned display value.
The GetMDXforPivot method returns the MDX query for saved pivot.
Arguments:
Format: folder/pivot name
Example: My Folder/My Pivot
0 - Do not execute the MDX query (Default)
1 - Execute the MDX query
Instance of %DeepSee.ResultSet for the MDX query:
This can be used to access the query results, meta data, statistics, etc.
To get the text of the MDX query, use only the pPivotFullName argument
To get the text of the MDX query and run the query, use pPivotFullName and pExecute
To get the text of the MDX query, run the query, and get the ResultSet, use pPivotFullName, pExecute and pResultSet
pCube is the cube name.
pTree is an array returned by reference that contains the member data.
pSkipMeasures is used internally and indicates that measures (as well as named filters) should not be listed.
pRoot is used to specify that an incremental load of children is requested; if provided it is the spec of a parent node.
pLocalCalcMembers is used to pass in additional calculated members.
pLocalNamedSets is used to pass in additional named sets.
pVisited and pRelatedBy are not used.
pSkeleton indicates that members and relationships are not displayed.
This list takes the form:
pList(NAME) = $LB(name,caption,moddate,type)
Return "" if the given cube does not exist.
When called on a subject area, this redirects to %GetSubjectAreaModel.
pFilters(n) = $LB(name,tooltip,spec,cube)
This list takes the form:
pList(NAME) = $LB(name,caption,moddate,type)
If pHidden is true, then include trash and local items.
If pCubeName is provided, then only list pivots based on it.
Return pValues(n) = $LB(text,spec)
pVariables(n) = $LB(name,caption,defValue,context,desc)
pCalcMbrs(n) = $LB(name,tooltip,dimension,cube)
Return "" if the given cube does not exist.
This method does not work on base cubes; use %GetModel.
This list takes the form:
pList(NAME) = $LB(name,caption,moddate,type)
If pHidden is true, then include trash and local items.
An abstract cube does not contain any data and cannot be queried.
This method can also optionally mark that a dimension is in the process of updating using the pInProgress paraeter.
A range expression takes the form:
spec:replace;spec:replace;
spec takes the form:
value | (value,value) | [value,value]
() specifies a non-inclusive edge of a range.
[] specifies a inclusive edge of a range.
pContext is used for error reporting. pCode contains a generated expression that implement the range expression (using x as an input value).
If pAsync is true, then background tasks are used.
If pVerbose is true, then status information is written to the console.
If pVerbose is true, then status information is written to the console.
pMissingReferences how missing references to related cubes were encountered. Refer to the %SynchronizeCube() for details.
This method logs current time as the cube's last data update but does not advance the cube's DSTIME timestamp.
%PurgeDSTIME() purges all nodes in ^DeepSee.Update that have already been processed by all cubes, and by all classes that extend %DeepSee.TimeSync. This method checks the DSTIME value for each cube, and for each class that extends %DeepSee.TimeSync, and computes the oldest DSTIME value that has not yet been synchronized. All DSTIME values older than that time are purged from the DSTIME index.
If a class has entries in the DSTIME index and no cubes use that class as a source class then those DSTIME entries are not purged.
Parameters | ||
---|---|---|
pVerbose | Input | If true then status messages will be displayed on the current device. |
pPurged | Output |
An array of DSTIME entries that have been purged. For example:
purged("DeepSee.Study.CityRainfall")=1 purged("DeepSee.Study.Patient")=2 purged("HoleFoods.Transaction")=0The array subscript is the class name and the value is the DSTIME value that was purged. |
Return value: This method returns a %Status value indicating success or failure.
pClass [Required] - The class to be purged from the ^OBJ.DSTIME update buffer. The "*" wildcard may be used to purge all classes present in the buffer.
pPurgeUpTo [Required] - This is the oldest timestamp that must be retained in the purge. Every entry older than this will be removed. The "*" wildcard may be used to remove all entries for the given pClass.
pIncrement - If true, the purge method will automatically advance the top node of ^OBJ.DSTIME to advance the timestamp of all non-interval type entries to support the next purge. This parameter is set to 1 by default.
This method is provided as a convenience for developers for use on development or test systems. You should not use this method on production systems as it will have immediate effect on the performance of end user operations.
This gives customer applications a chance to audit viewing of DeepSee dashboard pages. This is called whenever a DeepSee dashaboard is viewed in the user portal.
The server audit code is a valid ObjectScript expression stored in the ^DeepSee.AuditCode global. Server audit code should not write any output to the current device nor should this code kill any % variables required by Zen or DeepSee.
The variable, %dsDashboard, will contain the id (name) of the current dashboard item.
This gives customer applications a chance to clear environmental settings. This method is called whenever a DeepSee session is closed or when a background process completes work on a %DeepSee.WorkMgr queue.
The server close code is a valid ObjectScript expression stored in the ^DeepSee.CloseCode global. Server close code should not write any output to the current device nor should this code kill any % variables required by Zen or DeepSee.
This gives customer applications a chance to establish environmental settings. This is called whenever a DeepSee session is created or when a background process begins work on a %DeepSee.WorkMgr queue.
The server init code is a valid ObjectScript expression stored in the ^DeepSee.InitCode global. Server init code should not write any output to the current device nor should this code kill any % variables required by Zen or DeepSee.
- "build" - number of agents that will be requested for a single worker group performing cube build tasks
- "runTime" - number of agents that will be requested for queries and processing of user code such as KPIs
- "buildMax" - the maximum number of agents that can be active for user tasks
- "runTimeMax" - the maximum number of agents that can be active for user tasks
This is intended for classes that use DSTIME="manual" and wish to maintain the DSTIME index manually. It should be called whenever an instance of the class is inserted, updated, or deleted.
pClassName is the (case-sensitive) class name of the transactional class.
pObjectId is object id of the affected object instance.
pAction is 0 for updates, 1 for inserts, and 2 for deletes.
pInterval is the time interval value corresponding to the DSINTERVAL parameter. If this is not greater than zero then a standard DSTIME index entry is set, otherwise a DSINTERVAL index entry is set.
On return, pFactsUpdated will return the number of facts updated.
By default, reads from the source table use READ COMMITTED mode, you can turn this off (if you can tolerate reads of values from uncommitted transactions) by setting pReadCommitted to 0.
If this cube has facts that reference (via relationships) facts within another cube and any of those remote facts are missing (because the related cube has not been synchronized), then this method will report success and the missing references will be treated as build errors.
To avoid this type of error, it is better to plan your synchronization so that the related cubes are synchronized first (in the same order the cubes are built).
The pCheckReferences argument is deprecated and no longer has any effect on updates.
pAsync controls whether DeepSee performs the synchronize in multiple background processes. If this argument is true, the system uses multiple processes and does not return until they are all complete. If this argument is false, the system uses a single process and does not return until it is complete.
By default this method runs in the synchronous mode to avoid any potential interference with agents involved in background processing. If asynchronous mode is turned on, the synchronization work will be divided among all available Low priority agents.
pSynchronizeStatistics returns an array of information about the synchronize.
The array has four subscripts. For example, if tStats is the argument used, as in:
do ##class(%DeepSee.Utils).%SynchronizeCube("PATIENTS",1,,,,,.tStats) the array might look like the following:
tStats("elapsedTime")=.000643
tStats("errors")=1
tStats("factCount")=5
tStats("missingReferences")=1
If any errors occur during the synchronize process but all source records are successfully checked, this cube will treat processing for this timestamp as complete. The expectation is that any individual update errors can and should be resolved individually or through the %FixBuildErrors() method and not by the synchronize itself.
There are several tests:
Test 1: test the %Convert, %KeyToValue, and %ValueToKey methods.
Test 2: test the %Convert, %KeyToValue, and %ValueToKey methods.
See %FormatDate() for information on formats.
See %FormatDate() for information on formats.
Set tSC = ##class(%DeepSee.Utils).%UpdateDimensionProperty( "Holefoods","[Outlet].[H1].[Region].&[Asia]","Asia2")
pCubeName-name of the cube.
pSpec-specification of member to update as an MDX expression. This must completely specify a level and a single key value within the level. For example: "[Product].[P1].[Product Category].&[Candy]"
You can set the value of a dimension property by adding Properties(propName) to the end of the spec: "[Outlet].[H1].[City].&[23].Properties(""Population"")" pValue-if defined, this is new NAME value for a dimension member or the value to use for a dimension property.
pKey-if defined, this is new KEY value for a dimension member. Ignored for a dimension property.
There a number of restrictions on this method:
You cannot update a time dimension.
You cannot update a member of relationship.
You cannot update a level property whose isReference is true.
Inherited Members
Inherited Methods
- %AddToSaveSet()
- %ClassIsLatestVersion()
- %ClassName()
- %ConstructClone()
- %DispatchClassMethod()
- %DispatchGetModified()
- %DispatchGetProperty()
- %DispatchMethod()
- %DispatchSetModified()
- %DispatchSetMultidimProperty()
- %DispatchSetProperty()
- %Extends()
- %GetParameter()
- %IsA()
- %IsModified()
- %New()
- %NormalizeObject()
- %ObjectModified()
- %OriginalNamespace()
- %PackageName()
- %RemoveFromSaveSet()
- %SerializeObject()
- %SetModified()
- %ValidateObject()