Skip to content
Snippets Groups Projects
Commit 53b0e464 authored by Johannes Hörmann's avatar Johannes Hörmann
Browse files

Preview und Doku

parent 733f3752
No related branches found
No related tags found
No related merge requests found
......@@ -70,6 +70,8 @@
<entityProvider>
<name>ObjectRelations</name>
<fieldType>DEPENDENCY_IN</fieldType>
<targetContextField>objectTypeProxy</targetContextField>
<targetIdField>rowIdProxy</targetIdField>
<recordContainer>db</recordContainer>
<dependencies>
<entityDependency>
......
......@@ -3,45 +3,49 @@ Object Relation
:toc2: left
:numbered:
(how it works currently 13.02.2019)
(how it works currently 13.03.2019)
There are two possible ways for Object Relations:
== How the ObjectRelation_entity works ==
The entity works with the AB_OBJECTRELATION and AB_OBJECTRELATIONTYPE db-tables.
* With the ObjectRelation_entity
* With separate entities like the ActivityLink_entity
The AB_OBJECTRELATIONTYPE defines which relations are possible.
It always defines one "side" of the relation. So for each relation you always need two of them and both have to be from the same RELATION_TYPE.
== Differences ==
Relations which use a custom entity are specific for one object.
e.g. in ActivityLink are only relations between "activity" and "something".
In ObjectRelation are relations between "something" and "something".
So for example if you would like to have a relation between a child and parent you need these two types:
The activityLink could also be implemented with ObjectRelation, but as there are many activities with many relations.
So it is better to use an extra db-table.
----
AB_OBJECTRELATIONTYPEID = UID_1
OBJECT_TYPE = Person
RELATION_TITLE = child of
RELATION_TYPE = TypeUID_1
SIDE = 1
== How the ObjectRelation_entity works ==
The entity works with the AB_OBJECTRELATION db-table.
and
An ObjectRelation always has two Objects which consists of an Object-type and an Object-rowid.
The object-type is the id of the context. Which you can get by ContextUtils.getCurrentContextId of the Context_lib for the current context.
The object-rowid is the id of the Object you want use. Normally it is the UID of the Object.
AB_OBJECTRELATIONTYPEID = UID_2
OBJECT_TYPE = Person
RELATION_TITLE = parent of
RELATION_TYPE = TypeUID_1
SIDE = 2
----
It provides the following providers:
Note that the RELATION_TYPE is the same.
* AnyObject
* BothObjects
* Object1
* Object2
AnyObject is for bidirectional relations and all relations which contain the given AnyObject..._params as Object1 or Object2 will be loaded.
BothObjects is for relations between two specific objects provided by Object(1|2)..._params.
Object1 is for unidirectional relations where the Object1 is provided as parameters.
Object2 is for unidirectional relations where the Object2 is provided as parameters.
If you create a new relation between two persons it looks like this:
For the lookups there are two Entities: Object_entity for the Object-rowids and Context_entity for the Object-type.
See the documentation for them.
----
AB_OBJECTRELATIONID = RelUID_1
OBJECT1_ROWID = UID_Lisa_Sommer
OBJECT2_ROWID = UID_Franz_Mueller
AB_OBJECTRELATIONTYPE1 = UID_1
AB_OBJECTRELATIONTYPE2 = UID_2
----
-> So:
The provider use the targetContext-feature to show the preview of the linked objects directly. (see targetContext-docu in the ohers/guide folder)
* Most relationtypes consist of two separate types connected by the RELATION_TYPE-id
* Each type also has a SIDE, which defines, if it is for side 1 or side 2
* If both sides are from the same type, then there is only one OBJECTRELATIONTYPE with the side 1 and Objects use the same one.
== Link-entities ==
They work very similar to the ObjectRelation, but only use one Object. The lookups and targetContext-feature work the same.
\ No newline at end of file
The provider use the targetContext-feature to show the preview of the linked objects directly. (see targetContext-docu in the ohers/guide folder)
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment