OSI Query
Get queries will return all data for an instance. Instance attributes are shown using attribute names (using database terminology).
A GET query does not define field mappings, i.e. all attributes will be displayed by name. References and reference collection instances are provided as LOID-links. Each query creates a separate test mapping.
The mapping for an OSI GET query would look like:
Class/type |
Query/variable |
Source |
Comment |
Person/OSI |
Children |
Persons(?id) |
?id is a parameter passed with the HTTP request |
name |
name |
||
firstname |
first_name |
All first names | |
income |
Source name is the same as target | ||
children |
children() |
collection | |
name |
name |
Child name | |
firstname1 |
first_name(0) |
First first name | |
Income |
income |
Childs income |
The first line in the generated test script shows the URL for calling the query with GET method. Below, starting with the /osi line, the generated POST request follows as executed by the OHTTP server, because OSI has been defined as request type (method) for the query (mapping).
Test: http://localhost:2000/query/OSI/Person/Income?id="P124"
POST
user
pwd
/osi
Persons(?id) ==> {
name : name,
firstname1 : first_name(0),
income : income,
children_income : children_inc,
children : children() ==> {
name : name,
firstname : first_name,
income : income } }
The result returned from this request looks as:
{ Persons: { name: "Miller", firstname: [ "Rznmgxpiwb", "", "" ],
income: 0.00, children_income: 12643.00,
children: [
{name: "Ycngp", firstname1: "Dcwktgfuxj", income: 8261.00},
{name: "Czjso", firstname1: "Ygkordeqhx", income: 4382.00} ]
} }
Instead of property paths, access paths may contain also function calls to system or application functions.
Class/type |
Query/variable |
Source |
Comment |
Company/OSI |
EmployeesCount |
Company(?id) |
Calling a system function |
count |
employees.count |
Number of employees |
Here, instead of a company identifier (LOID), a collection position (2) has been passed in id.
Test: http://localhost:2000/query/OSI/Company/Employees?id=2
POST
user
pwd
/osi
Company(?id) ==> {
count : employees.count }
The query returns the number of employees in the company passed in ?id. Because the query is hierarchical (2 levels), the result returnes also contains a hierarchical structure.
{ Company: { count: 104 } }