Access paths describe access to object data and methods and enable a navigation through the database:
| 1. | If the data field (name1) is an object, its data field (name2) is accessed via name1.name2 |
| 2. | If the data field is a pointer on an object, its data field (name2)
can also be accessed via name1.name2
This means InstantView® does not differentiate between a pointer on an object and the object itself (like Java). `The C/C++ -equivalent name1->name2 is no longer supported. |
| 3. | Navigation can be continued from a data field CX_CONDITIONED_BAG data field with ->. -> requires the selection of an object, CX_CONDITIONED_BAG is seen as a variable pointer in PlugSpace. |
| 4. | The n-th element in a collection (name1) is
referred to with name1[n] Example: father.children[3] |
| 5 | and a data field (name2) of this element with
name1[n].name2. Here, n
represents an integer (constant) or an InstantView®
variable. Example: father.childeren[3].firstName |
| 6. | Member function calls can be done anywhere (with return value
object or collection); as a parameter, constants, a string/integer or an InstantView®
variable can be specified. An object can only be passed via InstantView®
variable. Example: owner.StateMonitor("REQUEST").mlShortName |
| 7. | If an access path starts with weak
all ClassiX® exceptions
are suppressed. In case of an exception no abort will be triggered, but the entire access path
will return INVALID. Example: item.weak.ProductAllocation(resolveType,0) 'weak' has to come right before the function call. 'weak' may also be used by a MA-function or the pseudo function call(...). |
| 8. | At the end of a data field of type INTEGER, SHORT, CHAR, ENUMSHORT or ENUMCHAR
you can access the n-th bit
with name[n]. With MULTIPLE_STRING data fields you
will get the n-th string (the n-th language). n may be an integer or an InstantView® variable. |
| 9. | The pseudo function var(x) can be at the start of an access path. It provides the InstantView® variable value x as an object. This construction changes the access path meaning: the object from which the navigation starts becomes irrelevant. This mainly makes sense inside formulas (see CX_FORMULA). |
| 10. | With help of the pseudo
function call(statement)
inside an access path an InstantView®
statement (macro) is called. The (by Define)
declared macro must be defined in the current module. Input to the macro is
the result of the access path just before the call(...) statement. The macro must return a value in the stack top. If the access path shall be continued after using call(...), even an object must be left in the stack top. |
| 11. | If the access path return value is a string, the pseudo function string(flag1, flag2, ...) can be used at the end, whereas the conversion of the string might be controlled by optional flags. |
| 12. | Pseudo function core() provides the referenced object (the
"wrapped" object) for CX_DESCRIPTIVE_REF- and CX_OVERWRITIG_REF objects -
even across several steps. Core() has no effect on any other object. The
object itself is the result. Example: salesItem.core().mlWordDoc |
| 13. | With the reserved word this, it is possible to refer to the object itself. This is mainly used to check access security and validity by date. If any of this two checks fail INVALID will be returned |
| 14. | With the reserved word hard, check of validity by date is ignored. |
Information: 'Data field' can be a data member (attribute) of a class or a dynamic data field. When an access path is executed security and validity by date is checked on all objects.
Data field names have to be registered in the Data Dictionary and function names in the Method Dictionary.