Objects can have any number of fields called Attributes. When an object is first created, a number of attributes are created for the object by default. These are: CreationTime (time the object was first created), ModificationTime (time the object was last updated), Deleted (whether the object is deleted or not), RequestId (request id that resulted in the last modification of the object), TransactionId (transaction id that resulted in the last modification of the object).
An attribute must have a name and be associated with an object.
An attribute will have a data type which can be one of (AutoGen, TimeStamp, Boolean, Float, Integer, Currency, String) and defaults to String. A data type of AutoGen means the field will be a primary key of type integer which will assume the next auto-incremented value from the g_key_generator table. TimeStamps are epoch times stored in integer format. Booleans are strings constrained to the values of True or False (or unset). Float is used to store decimal or floating point values. Currency is like Float but may have special business logic for handling currency values.
An object may have zero or more attributes which are primary keys (PrimaryKey==True), the combination of which are used to uniquely identify an object instance. Moab Accounting Manager will try to ensure that there can only be one object instance with the exact same set of values of its primary keys.
A required attribute (Required==True), must be either specified or be derived via a default value or other dynamic mechanism when the object is created. It can also not be unset.
A fixed attribute (Fixed==True), may not be changed from its initial value.
An attribute may be constrained to certain values via the Values attribute. The values may be constrained to members of a list expressed as a parenthesized comma-delimited list of strings (i.e. Values="(Brazil,China,France,Russia,USA)"). Alternatively, the values may be constrained to be an instance of a particular object type (like a foreign key constraint) by assigning to the Values attribute the name of an object prefixed by the '@' sign (e.g. Values="@Project" -- which would constrain the value of this attribute to be a valid project name). Stronger versions of the @-prefixed object-constrained values may be used in Quote, Reserve and Charge actions to enforce dynamic interactions between usage record properties such as to assign default values if not defined (e.g. Values="@?=Project"), verification values which evoke an error if they differ (e.g. Values="@!=Project"), or designated values which always overwrite the value (e.g. Values="@:=Project"). See Usage Record Property Instantiators for more information.
A default value may be assigned to an attribute via the DefaultValue attribute. When a new instance of an object is created, if a property is not specified for the attribute, the default value will be used.
The Sequence attribute determines which order an object's attributes will be listed in for queries if no selection list is specified in the query. Attributes with smaller sequence numbers will appear before attributes with larger sequence numbers. The Sequence attribute is also used to enforce a proper attribute display ordering in the web GUI.
The Hidden attribute specifies whether an attribute should be shown in a query by default or not. Hidden attributes can be seen in queries by specifying the ShowHidden option with a value of True.
The Description field is a location to describe the meaning of the attribute and is used in the GUI for field descriptions.
(Undefined variable: MyVariables.!CopyrightInfo!)