The transient JadeDynamicObject class implements the structure and behavior of dynamic objects. A JADE dynamic object is a self-describing object whose attributes are determined at run time.
The JadeDynamicObject class has two fixed attributes: type and name, which you can use to determine the runtime type of a dynamic object. The JADE inspector displays the type, name, and dynamic attribute names and values of JadeDynamicObject instances.
If the type of a property is removed by deleting the class or removing the schema and the property has been assigned a value, the value is no longer valid and attempting to use it will raise exception 1046 (Invalid class number).
The method in the following example creates a dynamic object and passes this to the Collection class getStatistics method, which populates the object with various statistical attributes and their values, returning the dynamic object to the caller. The method then uses the getPropertyName, getPropertyValueByIndex, and propertyCount methods to display the statistical attribute name and value pairs. As the calling method created the jdo variable, it is also responsible for deletion, which is performed in an epilog.
vars
jdo : JadeDynamicObject;
str : String;
int : Integer;
count : Integer;
begin
create jdo;
node.processes.getStatistics(jdo);
str := '---' & jdo.getName & '(' & jdo.type.String & ')---';
count := jdo.propertyCount;
foreach int in 1 to count do
str := str & CrLf & jdo.getPropertyName(int) &
" = " & jdo.getPropertyValueByIndex(int).String;
endforeach;
write str;
epilog
delete jdo;
end;
The method in the following example uses the
getProcessTicks();
vars
sample : JadeDynamicObject;
cumulativeProcessTicks : Integer64;
processTicks : Integer64;
person : Person;
begin
create sample transient;
process.getRequestStatistics(sample, 1); // local statistics
cumulativeProcessTicks :=
sample.getPropertyValue("processTicks").Integer64;
beginTransaction;
create person persistent;
person.surname := "Smith";
person.firstName := "John";
commitTransaction;
process.getRequestStatistics(sample, 1);
processTicks := sample.getPropertyValue("processTicks").Integer64 -
cumulativeProcessTicks;
delete sample;
write "Process ticks to create an object = " & processTicks.String;
end;
For details about the properties and methods defined in the JadeDynamicObject class, see "JadeDynamicObject Properties" and "JadeDynamicObject Methods", in the following subsections. For details about passing variable parameters to methods, see "
Object
(None)