author | Sylvain Thénault <sylvain.thenault@logilab.fr> |
Tue, 12 Jul 2011 12:22:02 +0200 | |
branch | stable |
changeset 7653 | 92464e39134c |
parent 6928 | 62b8ef1e859a |
child 7632 | 3c9dfc6e820b |
permissions | -rw-r--r-- |
6928
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
1 |
|
119
7a56ca431d65
[doc] missing file
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
2 |
.. -*- coding: utf-8 -*- |
7a56ca431d65
[doc] missing file
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
3 |
|
2279
b4e970513117
[doc] improve description of core concepts
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
2175
diff
changeset
|
4 |
.. _Concepts: |
b4e970513117
[doc] improve description of core concepts
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
2175
diff
changeset
|
5 |
|
4437
21f2e01fdd6a
update exemples using the 3.6 api and add/fix some sections (schema, vreg, talk about CW_MODE in concepts...). So much to do :'(
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3283
diff
changeset
|
6 |
The Core Concepts of |cubicweb| |
21f2e01fdd6a
update exemples using the 3.6 api and add/fix some sections (schema, vreg, talk about CW_MODE in concepts...). So much to do :'(
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3283
diff
changeset
|
7 |
=============================== |
301 | 8 |
|
5134
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
9 |
This section defines some terms and core concepts of the |cubicweb| framework. To |
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
10 |
avoid confusion while reading this book, take time to go through the following |
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
11 |
definitions and use this section as a reference during your reading. |
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
12 |
|
1714
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
13 |
|
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
14 |
.. _Cube: |
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
15 |
|
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
16 |
Cubes |
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
17 |
----- |
2175
16d3c37c5d28
[doc] improvements
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
2172
diff
changeset
|
18 |
|
2279
b4e970513117
[doc] improve description of core concepts
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
2175
diff
changeset
|
19 |
A cube is a software component made of three parts: its data model |
5400
b7ab099b128a
[doc/book] various content fixes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
5388
diff
changeset
|
20 |
(:mod:`schema`), its logic (:mod:`entities`) and its user interface |
b7ab099b128a
[doc/book] various content fixes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
5388
diff
changeset
|
21 |
(:mod:`views`). |
1714
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
22 |
|
5134
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
23 |
A cube can use other cubes as building blocks and assemble them to provide a |
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
24 |
whole with richer functionnalities than its parts. The cubes `cubicweb-blog`_ and |
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
25 |
`cubicweb-comment`_ could be used to make a cube named *myblog* with commentable |
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
26 |
blog entries. |
1714
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
27 |
|
5134
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
28 |
The `CubicWeb.org Forge`_ offers a large number of cubes developed by the community |
2175
16d3c37c5d28
[doc] improvements
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
2172
diff
changeset
|
29 |
and available under a free software license. |
1714
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
30 |
|
6928
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
31 |
.. note:: |
2279
b4e970513117
[doc] improve description of core concepts
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
2175
diff
changeset
|
32 |
|
6928
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
33 |
The command :command:`cubicweb-ctl list` displays the list of cubes |
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
34 |
installed on your system. |
1714
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
35 |
|
5134
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
36 |
.. _`CubicWeb.org Forge`: http://www.cubicweb.org/project/ |
2175
16d3c37c5d28
[doc] improvements
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
2172
diff
changeset
|
37 |
.. _`cubicweb-blog`: http://www.cubicweb.org/project/cubicweb-blog |
16d3c37c5d28
[doc] improvements
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
2172
diff
changeset
|
38 |
.. _`cubicweb-comment`: http://www.cubicweb.org/project/cubicweb-comment |
1714
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
39 |
|
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
40 |
|
5134
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
41 |
.. _Instance: |
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
42 |
|
1714
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
43 |
Instances |
2279
b4e970513117
[doc] improve description of core concepts
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
2175
diff
changeset
|
44 |
--------- |
1714
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
45 |
|
2175
16d3c37c5d28
[doc] improvements
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
2172
diff
changeset
|
46 |
An instance is a runnable application installed on a computer and based on a |
16d3c37c5d28
[doc] improvements
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
2172
diff
changeset
|
47 |
cube. |
119
7a56ca431d65
[doc] missing file
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
48 |
|
5134
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
49 |
The instance directory contains the configuration files. Several instances can be |
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
50 |
created and based on the same cube. For exemple, several software forges can be |
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
51 |
set up on one computer system based on the `cubicweb-forge`_ cube. |
119
7a56ca431d65
[doc] missing file
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
52 |
|
2175
16d3c37c5d28
[doc] improvements
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
2172
diff
changeset
|
53 |
.. _`cubicweb-forge`: http://www.cubicweb.org/project/cubicweb-forge |
16d3c37c5d28
[doc] improvements
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
2172
diff
changeset
|
54 |
|
2279
b4e970513117
[doc] improve description of core concepts
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
2175
diff
changeset
|
55 |
Instances can be of three different types: all-in-one, web engine or data |
b4e970513117
[doc] improve description of core concepts
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
2175
diff
changeset
|
56 |
repository. For applications that support high traffic, several web (front-end) |
b4e970513117
[doc] improve description of core concepts
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
2175
diff
changeset
|
57 |
and data (back-end) instances can be set-up to share the load. |
1714
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
58 |
|
5388
9167751463d4
[doc/book] rename images with non suffix dots to please latex
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
5306
diff
changeset
|
59 |
.. image:: ../images/archi_globale_en.png |
1714
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
60 |
|
4437
21f2e01fdd6a
update exemples using the 3.6 api and add/fix some sections (schema, vreg, talk about CW_MODE in concepts...). So much to do :'(
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3283
diff
changeset
|
61 |
The command :command:`cubicweb-ctl list` also displays the list of instances |
3258
6536ee4f37f7
update the documentation
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
2535
diff
changeset
|
62 |
installed on your system. |
2279
b4e970513117
[doc] improve description of core concepts
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
2175
diff
changeset
|
63 |
|
5400
b7ab099b128a
[doc/book] various content fixes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
5388
diff
changeset
|
64 |
.. note:: |
5134
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
65 |
|
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
66 |
The term application is used to refer to "something that should do something as |
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
67 |
a whole", eg more like a project and so can refer to an instance or to a cube, |
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
68 |
depending on the context. This book will try to use *application*, *cube* and |
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
69 |
*instance* as appropriate. |
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
70 |
|
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
71 |
|
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
72 |
.. _RepositoryIntro: |
119
7a56ca431d65
[doc] missing file
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
73 |
|
2279
b4e970513117
[doc] improve description of core concepts
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
2175
diff
changeset
|
74 |
Data Repository |
b4e970513117
[doc] improve description of core concepts
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
2175
diff
changeset
|
75 |
--------------- |
2175
16d3c37c5d28
[doc] improvements
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
2172
diff
changeset
|
76 |
|
6928
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
77 |
The data repository [1]_ encapsulates and groups an access to one or |
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
78 |
more data sources (including SQL databases, LDAP repositories, other |
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
79 |
|cubicweb| instance repositories, filesystems, Google AppEngine's |
5134
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
80 |
DataStore, etc). |
1714
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
81 |
|
6928
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
82 |
All interactions with the repository are done using the `Relation Query Language` |
5134
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
83 |
(:ref:`RQL`). The repository federates the data sources and hides them from the |
6928
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
84 |
querier, which does not realize when a query spans several data sources |
4446
a413fac5ff5e
damn me, more stupid sed fix...
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4442
diff
changeset
|
85 |
and requires running sub-queries and merges to complete. |
119
7a56ca431d65
[doc] missing file
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
86 |
|
6928
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
87 |
Application logic can be mapped to data events happenning within the |
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
88 |
repository, like creation of entities, deletion of relations, |
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
89 |
etc. This is used for example to send email notifications when the |
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
90 |
state of an object changes. See :ref:`HookIntro` below. |
2279
b4e970513117
[doc] improve description of core concepts
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
2175
diff
changeset
|
91 |
|
4437
21f2e01fdd6a
update exemples using the 3.6 api and add/fix some sections (schema, vreg, talk about CW_MODE in concepts...). So much to do :'(
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3283
diff
changeset
|
92 |
.. [1] not to be confused with a Mercurial repository or a Debian repository. |
2279
b4e970513117
[doc] improve description of core concepts
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
2175
diff
changeset
|
93 |
.. _`Python Remote Objects`: http://pyro.sourceforge.net/ |
1714
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
94 |
|
5134
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
95 |
.. _WebEngineIntro: |
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
96 |
|
2279
b4e970513117
[doc] improve description of core concepts
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
2175
diff
changeset
|
97 |
Web Engine |
b4e970513117
[doc] improve description of core concepts
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
2175
diff
changeset
|
98 |
---------- |
1714
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
99 |
|
6928
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
100 |
The web engine replies to http requests and runs the user interface. |
1714
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
101 |
|
5144
5a09bea07302
[doc/book] a new chapter on how to use the ORM
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
5143
diff
changeset
|
102 |
By default the web engine provides a `CRUD`_ user interface based on |
3258
6536ee4f37f7
update the documentation
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
2535
diff
changeset
|
103 |
the data model of the instance. Entities can be created, displayed, |
6536ee4f37f7
update the documentation
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
2535
diff
changeset
|
104 |
updated and deleted. As the default user interface is not very fancy, |
6536ee4f37f7
update the documentation
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
2535
diff
changeset
|
105 |
it is usually necessary to develop your own. |
1714
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
106 |
|
6928
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
107 |
It is common to run the web engine and the repository in the same |
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
108 |
process (see instances of type all-in-one above), but this is not a |
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
109 |
requirement. A repository can be set up to be accessed remotely using |
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
110 |
Pyro (`Python Remote Objects`_) and act as a standalone server, which |
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
111 |
can be directly accessed or also through a standalone web engine. |
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
112 |
|
5144
5a09bea07302
[doc/book] a new chapter on how to use the ORM
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
5143
diff
changeset
|
113 |
.. _`CRUD`: http://en.wikipedia.org/wiki/Create,_read,_update_and_delete |
5134
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
114 |
|
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
115 |
.. _SchemaIntro: |
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
116 |
|
2279
b4e970513117
[doc] improve description of core concepts
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
2175
diff
changeset
|
117 |
Schema (Data Model) |
b4e970513117
[doc] improve description of core concepts
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
2175
diff
changeset
|
118 |
------------------- |
119
7a56ca431d65
[doc] missing file
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
119 |
|
2279
b4e970513117
[doc] improve description of core concepts
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
2175
diff
changeset
|
120 |
The data model of a cube is described as an entity-relationship schema using a |
b4e970513117
[doc] improve description of core concepts
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
2175
diff
changeset
|
121 |
comprehensive language made of Python classes imported from the yams_ library. |
1714
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
122 |
|
2279
b4e970513117
[doc] improve description of core concepts
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
2175
diff
changeset
|
123 |
.. _yams: http://www.logilab.org/project/yams/ |
119
7a56ca431d65
[doc] missing file
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
124 |
|
6928
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
125 |
An `entity type` defines a sequence of attributes. Attributes may be |
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
126 |
of the following types: `String`, `Int`, `Float`, `Boolean`, `Date`, |
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
127 |
`Time`, `Datetime`, `Interval`, `Password`, `Bytes`, `RichString`. |
119
7a56ca431d65
[doc] missing file
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
128 |
|
6928
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
129 |
A `relation type` is used to define an oriented binary relation |
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
130 |
between entity types. The left-hand part of a relation is named the |
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
131 |
`subject` and the right-hand part is named the `object`. |
119
7a56ca431d65
[doc] missing file
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
132 |
|
2279
b4e970513117
[doc] improve description of core concepts
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
2175
diff
changeset
|
133 |
A `relation definition` is a triple (*subject entity type*, *relation type*, *object |
b4e970513117
[doc] improve description of core concepts
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
2175
diff
changeset
|
134 |
entity type*) associated with a set of properties such as cardinality, |
b4e970513117
[doc] improve description of core concepts
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
2175
diff
changeset
|
135 |
constraints, etc. |
1714
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
136 |
|
6928
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
137 |
Permissions can be set on entity types or relation definition to control who |
5134
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
138 |
will be able to create, read, update or delete entities and relations. Permissions |
6928
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
139 |
are granted to groups (to which users may belong) or using rql expressions (if the |
5134
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
140 |
rql expression returns some results, the permission is granted). |
1714
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
141 |
|
6928
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
142 |
Some meta-data necessary to the system are added to the data model. That includes |
2279
b4e970513117
[doc] improve description of core concepts
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
2175
diff
changeset
|
143 |
entities like users and groups, the entities used to store the data model |
b4e970513117
[doc] improve description of core concepts
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
2175
diff
changeset
|
144 |
itself and attributes like unique identifier, creation date, creator, etc. |
1714
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
145 |
|
4437
21f2e01fdd6a
update exemples using the 3.6 api and add/fix some sections (schema, vreg, talk about CW_MODE in concepts...). So much to do :'(
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3283
diff
changeset
|
146 |
When you create a new |cubicweb| instance, the schema is stored in the database. |
2279
b4e970513117
[doc] improve description of core concepts
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
2175
diff
changeset
|
147 |
When the cubes the instance is based on evolve, they may change their data model |
b4e970513117
[doc] improve description of core concepts
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
2175
diff
changeset
|
148 |
and provide migration scripts that will be executed when the administrator will |
b4e970513117
[doc] improve description of core concepts
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
2175
diff
changeset
|
149 |
run the upgrade process for the instance. |
1714
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
150 |
|
5134
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
151 |
|
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
152 |
.. _VRegistryIntro: |
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
153 |
|
5143
43afbdd5c8b4
improved doc on selectors an vregistry
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5134
diff
changeset
|
154 |
Registries and application objects |
43afbdd5c8b4
improved doc on selectors an vregistry
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5134
diff
changeset
|
155 |
---------------------------------- |
1714
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
156 |
|
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
157 |
Application objects |
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
158 |
~~~~~~~~~~~~~~~~~~~ |
2279
b4e970513117
[doc] improve description of core concepts
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
2175
diff
changeset
|
159 |
|
6928
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
160 |
Besides a few core functionalities, almost every feature of the framework is |
2279
b4e970513117
[doc] improve description of core concepts
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
2175
diff
changeset
|
161 |
achieved by dynamic objects (`application objects` or `appobjects`) stored in a |
6928
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
162 |
two-levels registry. Each object is affected to a registry with |
1714
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
163 |
an identifier in this registry. You may have more than one object sharing an |
6928
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
164 |
identifier in the same registry: |
5134
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
165 |
|
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
166 |
object's `__registry__` : object's `__regid__` : [list of app objects] |
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
167 |
|
6928
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
168 |
In other words, the `registry` contains several (sub-)registries which hold a |
5306
763319a51e72
[doc/book] some fixes for vregistry, selectors & appobjects
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
5257
diff
changeset
|
169 |
list of appobjects associated to an identifier. |
5134
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
170 |
|
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
171 |
The base class of appobjects is :class:`cubicweb.appobject.AppObject`. |
1714
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
172 |
|
5134
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
173 |
Selectors |
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
174 |
~~~~~~~~~ |
1714
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
175 |
|
6928
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
176 |
At runtime, appobjects can be selected in a registry according to some |
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
177 |
contextual information. Selection is done by comparing the *score* |
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
178 |
returned by each appobject's *selector*. |
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
179 |
|
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
180 |
The better the object fits the context, the higher the score. Scores |
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
181 |
are the glue that ties appobjects to the data model. Using them |
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
182 |
appropriately is an essential part of the construction of well behaved |
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
183 |
cubes. |
1714
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
184 |
|
5134
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
185 |
|cubicweb| provides a set of basic selectors that may be parametrized. Also, |
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
186 |
selectors can be combined with the `~` unary operator (negation) and the binary |
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
187 |
operators `&` and `|` (respectivly 'and' and 'or') to build more complex |
5608
f9ab62103ad4
proof read documentation
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
5400
diff
changeset
|
188 |
selectors. Of course complex selectors may be combined too. Last but not least, you |
5143
43afbdd5c8b4
improved doc on selectors an vregistry
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5134
diff
changeset
|
189 |
can write your own selectors. |
119
7a56ca431d65
[doc] missing file
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
190 |
|
6928
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
191 |
The `registry` |
1714
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
192 |
~~~~~~~~~~~~~~~ |
2279
b4e970513117
[doc] improve description of core concepts
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
2175
diff
changeset
|
193 |
|
6928
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
194 |
At startup, the `registry` inspects a number of directories looking |
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
195 |
for compatible class definitions. After a recording process, the |
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
196 |
objects are assigned to registries and become available through the |
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
197 |
selection process. |
1714
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
198 |
|
5143
43afbdd5c8b4
improved doc on selectors an vregistry
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5134
diff
changeset
|
199 |
In a cube, application object classes are looked in the following modules or |
43afbdd5c8b4
improved doc on selectors an vregistry
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5134
diff
changeset
|
200 |
packages: |
2279
b4e970513117
[doc] improve description of core concepts
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
2175
diff
changeset
|
201 |
|
5134
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
202 |
- `entities` |
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
203 |
- `views` |
6928
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
204 |
- `hooks` |
5134
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
205 |
- `sobjects` |
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
206 |
|
6928
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
207 |
There are three common ways to look up some application object from a |
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
208 |
registry: |
119
7a56ca431d65
[doc] missing file
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
209 |
|
6928
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
210 |
* get the most appropriate object by specifying an identifier and |
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
211 |
context objects. The object with the greatest score is |
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
212 |
selected. There should always be a single appobject with a greater |
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
213 |
score than others for a particular context. |
1714
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
214 |
|
6928
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
215 |
* get all objects applying to a context by specifying a registry. A |
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
216 |
list of objects will be returned containing the object with the |
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
217 |
highest score (> 0) for each identifier in that registry. |
1714
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
218 |
|
6928
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
219 |
* get the object within a particular registry/identifier. No selection |
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
220 |
process is involved: the registry will expect to find a single |
1714
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
221 |
object in that cell. |
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
222 |
|
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
223 |
|
5134
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
224 |
.. _RQLIntro: |
119
7a56ca431d65
[doc] missing file
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
diff
changeset
|
225 |
|
1714
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
226 |
The RQL query language |
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
227 |
---------------------- |
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
228 |
|
5400
b7ab099b128a
[doc/book] various content fixes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
5388
diff
changeset
|
229 |
No need for a complicated ORM when you have a powerful data |
b7ab099b128a
[doc/book] various content fixes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
5388
diff
changeset
|
230 |
manipulation language. |
2279
b4e970513117
[doc] improve description of core concepts
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
2175
diff
changeset
|
231 |
|
5400
b7ab099b128a
[doc/book] various content fixes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
5388
diff
changeset
|
232 |
All the persistent data in a |cubicweb| instance is retrieved and |
b7ab099b128a
[doc/book] various content fixes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
5388
diff
changeset
|
233 |
modified using RQL (see :ref:`rql_intro`). |
1714
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
234 |
|
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
235 |
This query language is inspired by SQL but is on a higher level in order to |
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
236 |
emphasize browsing relations. |
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
237 |
|
5134
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
238 |
|
1714
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
239 |
Result set |
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
240 |
~~~~~~~~~~ |
2279
b4e970513117
[doc] improve description of core concepts
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
2175
diff
changeset
|
241 |
|
5134
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
242 |
Every request made (using RQL) to the data repository returns an object we call a |
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
243 |
Result Set. It enables easy use of the retrieved data, providing a translation |
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
244 |
layer between the backend's native datatypes and |cubicweb| schema's EntityTypes. |
3258
6536ee4f37f7
update the documentation
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
2535
diff
changeset
|
245 |
|
5134
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
246 |
Result sets provide access to the raw data, yielding either basic Python data |
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
247 |
types, or schema-defined high-level entities, in a straightforward way. |
1714
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
248 |
|
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
249 |
|
5134
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
250 |
.. _ViewIntro: |
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
251 |
|
1714
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
252 |
Views |
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
253 |
----- |
2279
b4e970513117
[doc] improve description of core concepts
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
2175
diff
changeset
|
254 |
|
5134
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
255 |
**CubicWeb is data driven** |
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
256 |
|
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
257 |
The view system is loosely coupled to data through the selection system explained |
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
258 |
above. Views are application objects with a dedicated interface to 'render' |
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
259 |
something, eg producing some html, text, xml, pdf, or whatsover that can be |
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
260 |
displayed to a user. |
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
261 |
|
6928
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
262 |
Views actually are partitioned into different kind of objects such as |
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
263 |
`templates`, `boxes`, `components` and proper `views`, which are more |
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
264 |
high-level abstraction useful to build the user interface in an object |
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
265 |
oriented way. |
1714
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
266 |
|
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
267 |
|
5134
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
268 |
.. _HookIntro: |
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
269 |
|
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
270 |
Hooks and operations |
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
271 |
-------------------- |
4437
21f2e01fdd6a
update exemples using the 3.6 api and add/fix some sections (schema, vreg, talk about CW_MODE in concepts...). So much to do :'(
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3283
diff
changeset
|
272 |
|
21f2e01fdd6a
update exemples using the 3.6 api and add/fix some sections (schema, vreg, talk about CW_MODE in concepts...). So much to do :'(
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3283
diff
changeset
|
273 |
**CubicWeb provides an extensible data repository** |
1714
a721966779be
new book layout, do not compile yet
sylvain.thenault@logilab.fr
parents:
1398
diff
changeset
|
274 |
|
3258
6536ee4f37f7
update the documentation
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
2535
diff
changeset
|
275 |
The data model defined using Yams types allows to express the data |
6536ee4f37f7
update the documentation
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
2535
diff
changeset
|
276 |
model in a comfortable way. However several aspects of the data model |
6536ee4f37f7
update the documentation
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
2535
diff
changeset
|
277 |
can not be expressed there. For instance: |
6536ee4f37f7
update the documentation
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
2535
diff
changeset
|
278 |
|
6536ee4f37f7
update the documentation
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
2535
diff
changeset
|
279 |
* managing computed attributes |
6536ee4f37f7
update the documentation
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
2535
diff
changeset
|
280 |
|
6928
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
281 |
* enforcing complicated business rules |
3258
6536ee4f37f7
update the documentation
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
2535
diff
changeset
|
282 |
|
6536ee4f37f7
update the documentation
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
2535
diff
changeset
|
283 |
* real-world side-effects linked to data events (email notification |
6536ee4f37f7
update the documentation
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
2535
diff
changeset
|
284 |
being a prime example) |
6536ee4f37f7
update the documentation
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
2535
diff
changeset
|
285 |
|
6536ee4f37f7
update the documentation
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
2535
diff
changeset
|
286 |
The hook system is much like the triggers of an SQL database engine, |
6536ee4f37f7
update the documentation
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
2535
diff
changeset
|
287 |
except that: |
6536ee4f37f7
update the documentation
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
2535
diff
changeset
|
288 |
|
6536ee4f37f7
update the documentation
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
2535
diff
changeset
|
289 |
* it is not limited to one specific SQL backend (every one of them |
6536ee4f37f7
update the documentation
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
2535
diff
changeset
|
290 |
having an idiomatic way to encode triggers), nor to SQL backends at |
6536ee4f37f7
update the documentation
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
2535
diff
changeset
|
291 |
all (think about LDAP or a Subversion repository) |
6536ee4f37f7
update the documentation
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
2535
diff
changeset
|
292 |
|
6536ee4f37f7
update the documentation
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
2535
diff
changeset
|
293 |
* it is well-coupled to the rest of the framework |
6536ee4f37f7
update the documentation
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
2535
diff
changeset
|
294 |
|
6928
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
295 |
Hooks are also application objects (in the `hooks` registry) and |
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
296 |
selected on events such as after/before add/update/delete on |
62b8ef1e859a
[doc/book] simplify & fix the overview chapter
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
6397
diff
changeset
|
297 |
entities/relations, server startup or shutdown, etc. |
3258
6536ee4f37f7
update the documentation
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
2535
diff
changeset
|
298 |
|
5134
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
299 |
`Operations` may be instantiated by hooks to do further processing at different |
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
300 |
steps of the transaction's commit / rollback, which usually can not be done |
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
301 |
safely at the hook execution time. |
3258
6536ee4f37f7
update the documentation
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
2535
diff
changeset
|
302 |
|
5134
910e021131d1
[doc] enhanced concepts section
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4446
diff
changeset
|
303 |
Hooks and operation are an essential building block of any moderately complicated |
3258
6536ee4f37f7
update the documentation
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
2535
diff
changeset
|
304 |
cubicweb application. |
4437
21f2e01fdd6a
update exemples using the 3.6 api and add/fix some sections (schema, vreg, talk about CW_MODE in concepts...). So much to do :'(
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3283
diff
changeset
|
305 |
|
5400
b7ab099b128a
[doc/book] various content fixes
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
5388
diff
changeset
|
306 |
.. note:: |
5608
f9ab62103ad4
proof read documentation
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
5400
diff
changeset
|
307 |
RQL queries executed in hooks and operations are *unsafe* by default, i.e. the |
5146
fe56baf63ecb
add note about running repository / client code
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5144
diff
changeset
|
308 |
read and write security is deactivated unless explicitly asked. |