RecordType#
Note
This page has been migrated from the old documentation, and has not yet been fully revised. There might be inconsistencies or errors when using with current LinkAhead versions.
RecordTypes act as templates for Records. They provide a
description for a type of Record and define which
Properties could, should, or must be present.
Properties come with an importance attribute which tells the user or client program how strongly
necessary the Property is. As all other entities, RecordTypes can inherit from other RecordTypes (or
any Entities). When RecordTypes inherit from other RecordTypes, the inheritance flag tells which
properties any children shall inherit from its parents.
Importance#
The importance value of a Property states whether it may, should, or must be present in all
children of this Entity. The table below lists the possible importances, together with the default
behavior of the server when the property is not present in a child.
Importance |
Meaning |
Consequence when omitted |
|---|---|---|
|
Property must be present |
Can be forced to be committed the server, but usually an error will be returned. |
|
Property should be present (makes sense for most users) |
No consequence right now, but in future versions a warning will be returned. |
|
Property may be present (may make sense for some users) |
No negative consequence |
|
Property is not present in any child |
— |
The default behavior can be overridden for individual transaction by setting the
force-missing-obligatory flag to ERROR (the default), WARN, or IGNORE. These flags cause a
transaction that would result in an entity with a missing obligatory property to return an error,
a warning, or to execute without a warning, respectively. The importance value FIX is used for
properties that are specific to the Entity itself and is explained below.
Note
Note that in contrast to RecordTypes, all properties of a
Record have the importance FIX since in general, even in the
case of a Record having children, its properties are not inherited.
Inheritance#
The inheritance flag specifies which Properties are inherited from the
parent RecordType(s) to the child.
Inheritance |
Meaning |
|---|---|
None (default) |
Nothing is inherited |
|
Properties of importance |
|
Properties of importance |
|
Properties of importance |
|
Copy everything from the parent. |
Note that inheritance ALL is essentially the same as SUGGESTED right now, but this behavior
might change in the future. Also note that properties of importance FIX are never inherited this
way. This is precisely what this importance level is meant for: properties that are specific to the
parent entity and are not inherited by default. You can still add this property to the child
manually if you wish, though, but this is not covered by the automatic inheritance.
Note
The behavior of inheritance is currently not well-defined if the child is a
Record, not a
RecordType.
Examples#
Warning
The following examples have not been updated in a while and may serve as a starting point, but are not guaranteed to be fully applicable to the most recent versions of LinkAhead.
GET Requests#
Single-Get#
Request:
GET http://localhost:8122/RecordType/1
Response:
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<RecordType id="1" name="Experiment" description="Description Experiment">
<Property id="1" name="explanation" type="text" description="explains the thing" importance="obligatory" />
<Property id="4" name="id" type="integer" description="identifier" exponent="0" importance="recommended" />
<Property id="6" name="startDate" type="datetime" description="start" importance="obligatory" />
<Property id="7" name="stopDate" type="datetime" description="stop" importance="recommended" />
<Property id="12" name="file" type="file" description="file" importance="suggested" />
</RecordType>
</Response>
Multi-Get#
Request:
GET http://localhost:8122/RecordType/1&2&3
Response:
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<RecordType id="1" name="Experiment" description="Description Experiment">
<Property id="1" name="explanation" type="text" description="explains the thing" importance="obligatory" />
<Property id="4" name="id" type="integer" description="identifier" exponent="0" importance="recommended" />
<Property id="6" name="startDate" type="datetime" description="start" importance="obligatory" />
<Property id="7" name="stopDate" type="datetime" description="stop" importance="recommended" />
<Property id="12" name="file" type="file" description="file" importance="suggested" />
</RecordType>
<RecordType id="2" name="Measurement" description="Description Measurement">
<Property id="1" name="explanation" type="text" description="explains the thing" importance="obligatory" />
<Property id="4" name="id" type="integer" description="identifier" exponent="0" importance="recommended" />
<Property id="6" name="startDate" type="datetime" description="start" importance="obligatory" />
<Property id="7" name="stopDate" type="datetime" description="stop" importance="recommended" />
<Property id="12" name="file" type="file" description="file" importance="suggested" />
</RecordType>
<RecordType id="3" name="Video" description="Description Video">
<Property id="1" name="explanation" type="text" description="explains the thing" importance="recommended" />
<Property id="6" name="startDate" type="datetime" description="start" importance="recommended" />
<Property id="12" name="file" type="file" description="file" importance="obligatory" />
</RecordType>
</Response>
Get all#
Request:
GET http://localhost:8122/RecordType/
GET http://localhost:8122/RecordType
Response:
Note
Outdated? At least the bug tracker doesn’t exist anymore.
<?xml version="1.0" encoding="UTF-8"?>
<Response />
POST Requests#
Request is to be sent to:
POST http://localhost:8122/RecordType/
POST http://localhost:8122/RecordType/
Single-Post#
HTTP Body:
<Post>
<RecordType name="TimmsRecordType11" >
<Property id="3" importance="recommended"/>
<Property id="4" importance="obligatory"/>
<Property name="age" />
</RecordType>
</Post>
Response:
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<RecordType id="40" name="TimmsRecordType11">
<Property id="3" name="name" type="text" description="Name" importance="recommended" />
<Property id="4" name="id" type="integer" description="identifier" importance="suggested" />
</RecordType>
</Response>
Multi-Post#
HTTP Body:
<Post>
<RecordType name="TimmsRecordType11" >
<Property id="3" importance="recommended"/>
<Property id="4" importance="obligatory"/>
<Property name="age" />
</RecordType>
<RecordType name="TimmsRecordType12" >
<Property id="6" importance="recommended"/>
<Property id="7" importance="obligatory"/>
<Property id="15" />
</RecordType>
</Post>
Response:
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<RecordType id="40" name="TimmsRecordType11" description="null">
<Property id="3" name="name" type="text" description="Name" importance="recommended" />
<Property id="4" name="id" type="integer" description="identifier" importance="suggested" />
<Property id="3" name="name" type="text" description="Name" importance="recommended" />
<Property id="4" name="id" type="integer" description="identifier" exponent="0" importance="suggested" />
</RecordType>
<RecordType id="41" name="TimmsRecordType12">
<Property id="6" name="startDate" type="datetime" description="start" importance="recommended" />
<Property id="7" name="stopDate" type="datetime" description="stop" importance="suggested" />
<Property id="15" name="TimmsIntProperty" type="integer" unit="kg" description="This is TimmsIntProperty" importance="suggested" />
</RecordType>
</Response>
DELETE RecordTypes#
HTTP-DELETE-requests are to be sent to http://${host}:${port}/RecordType/.... Default port is
8123.
Example
DELETE http://${host}:${port}/RecordType/1&2&3&4