Salome HOME
PR : merge branch V1_2c dans branche principale pour V1_3_0_b1
[modules/kernel.git] / doc / html / INPUT / sources / static / overview_Study.html
diff --git a/doc/html/INPUT/sources/static/overview_Study.html b/doc/html/INPUT/sources/static/overview_Study.html
new file mode 100755 (executable)
index 0000000..f4c2783
--- /dev/null
@@ -0,0 +1,261 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">\r
+<html>\r
+<head>\r
+   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">\r
+   <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">\r
+   <title>Main Page</title>\r
+<link href="doxygen.css" rel="stylesheet" type="text/css">\r
+</head>\r
+<body>\r
+&nbsp;\r
+<center><table WIDTH="96%" >\r
+<tr>\r
+<td><a href="http://www.opencascade.com"><img src="sources/logocorp.gif" BORDER=0 height=46 width=122></a></td>\r
+\r
+\r
+<td>\r
+<div align=right><a href="http://www.opencascade.org/SALOME/"><img src="sources/application.gif" BORDER=0 height=46 width=108></a></div>\r
+</td>\r
+</tr>\r
+</table></center>\r
+\r
+\r
+<h1><a name="page2">General overview</a>\r
+</h1>\r
+<br>\r
+<h2><a name="cont"></a>Table of contents</h2>\r
+<ul>\r
+  <li><i><b><a href="#1">1. Introduction</a></b></i></li>\r
+  <li><i><b><a href="#2">2. Representation of the study</a></b></i></li>\r
+  <ul>\r
+    <li><i><b><a href="#2_1">2.1 Study in transient format</a></b></i></li>\r
+    <li><i><b><a href="#2_2">2.2 Study in persistent format</a></b></i></li>\r
+    <li><i><b><a href="#2_3">2.3 Link between transient and persistent formats</a></b></i></li>\r
+  </ul>\r
+  <li><i><b><a href="#3">3. Services and features of the study</a></b></i></li>\r
+  <ul>\r
+  <li><i><b><a href="#3_1">3.1 Study class </a></b></i></li>\r
+  <li><i><b><a href="#3_2">3.2 StudyBuilder class </a></b></i></li>\r
+  <li><i><b><a href="#3_3">3.3 StudyManager class </a></b></i></li>\r
+  <li><i><b><a href="#3_4">3.4 SObject class </a></b></i></li>\r
+  <li><i><b><a href="#3_5">3.5 SComponent class </a></b></i></li>\r
+  <li><i><b><a href="#3_6">3.6 ChildIterator class </a></b></i></li>\r
+  <li><i><b><a href="#3_7">3.7 SComponentIterator </a></b></i></li>\r
+  <li><i><b><a href="#3_8">3.8 GenericAttribute class  </a></b></i></li>\r
+  <li><i><b><a href="#3_9">3.9 UseCaseBuilder class </a></b></i></li>\r
+  <li><i><b><a href="#3_10">3.10 UseCaseIterator </a></b></i></li>\r
+  <li><i><b><a href="#3_12">3.11 Callback class </a></b></i></li>\r
+  <li><i><b><a href="#3_12">3.12 Driver class </a></b></i></li>\r
+  </ul>\r
+</ul> \r
+<h2><a name="1"></a>1. Introduction</h2>\r
+<p>In SALOME application the Study module is used for management (creation, saving \r
+  etc.) of studies. In the framework of the platform, a study represents a working \r
+  document allowing to manage the data produced by various components which are \r
+  integarted into SALOME.<br>\r
+</p>\r
+<h2><a name="2"></a>2. Representation of the study</h2>\r
+<p>The study represents a set of objects that we will call Study Objects or SObjects. \r
+  The study can be represented as a tree, every node of that tree containing a \r
+  SObject. SObjects in the study can be values or references towards data of calculation, \r
+  graphs of calculation, trees of construction of detail(room), results. Every \r
+  SOject of the study is characterised by a unique identifier in the study.</p>\r
+<p>The study allows to describe the following relations:</p>\r
+<ul>\r
+  <li>The link between the transient and persistent values of an SObject.</li>\r
+  <li>The relations between the SObjects produced by different components.</li>\r
+  <li>The relations between the SObjects produced by the same component.</li>\r
+  <li>The link between an object and its user name.</li>\r
+  <li>The access to the definition of the component which produce an object of \r
+    the study.</li>\r
+  <li>The access to instance of the component (if this one exists) which has produced \r
+    this SObject of the study.</li>\r
+</ul>\r
+\r
+<p>Every SObject in the study contains a set of attributes. These attributes represent \r
+  a set of definitions associated to that object, they can contain values or corba \r
+  references towards the data contained in the internal data structure of a component.</p>\r
+<p>As the structure of the study is tree-like it is possible to associate sub-objects \r
+  to objects.</p>\r
+<p>As particular object, the study contains Component Data which are labels associated to the component\r
+which produce data in the study. It is to this object that we can associate attributes containing ID which\r
+we shall allow to identify the type of the component and also its instance. Objects produced by a\r
+component will be sub-objects of the coresponding Data Component.</p>\r
+<p>For example Component Data GEOM will contain the data produced by the component \r
+  Geom.</p>\r
+<table width="100%" border="0">\r
+  <tr>\r
+    <td><img src="Study_Struct.gif"></td>\r
+    <td>GEOM contains the data produced by the component GEOM. The component MESH \r
+      contains a SObject Mesh_1 wich refers to the SObject identified \r
+      by ID4 corresponding to Geometrie_1.</td>\r
+  </tr>\r
+</table>\r
+<p>We distinguish two forms of the study, the study opened in a session SALOME and the study in the\r
+persistent format. These two formats are described in the following sections</p>\r
+<h3><a name="2_1"></a>2.1 Study in transient format</h3>\r
+<p>The representation of the study in memory will be based on the document OCAF (supplied by OCC).\r
+The document OCAF can be seen as a tree, every node of that tree is identified by <i>a tag</i> representing an integer value.</p>\r
+<p>The exploration of the tree from the root to a node supplies a sequence of tags which establishes a\r
+unique identifier <i>ID</i>. ID represents a character string containing the sequence of tags separated by\r
+one ':'.</p> \r
+<p>For example  0:1:12:4 </p>\r
+<p>To every node we can associate a set of attributes.</p>\r
+<p>The attributes which the study can contain can be of the following types:</p>\r
+<ul>\r
+<li>All standard attributes supplied by OCC (package TdataStd) which allow to define (integers,\r
+real, strings, identifiers, references etc.)</li>\r
+<li>Attributes which contain CORBA references.</li>\r
+<li>Attributes which contain the path HDF to reach the persistent datum. (Cf. the following chapter)</li>\r
+</ul>\r
+<p><b>Remark</b>: it is the study which takes care to build the attributes from the values which are passed to it, so\r
+an attribute is always in a study, and it knows the study object to which it is attached.</p>\r
+<p>Example of a Study Object as a set of various attributes.</p>\r
+<img src="SObject.gif"> \r
+<h3><a name="2_2"></a>2.2 Study in persistent format</h3>\r
+<p>To store a study HDF format is used, this tool allows to represent persistent data in the form of a tree.</p>\r
+<p>Under the root of the persistent document, you can find a set of nodes:</p>\r
+<ul>\r
+<li>The first node contains the skeleton of the study. The skeleton consists of the identifiers of the\r
+objects, as well as the references among them.</li>\r
+<li>There is also one node for every component which has produced data during this SALOME session. Under each of these\r
+node there are values of the data produced by this component.</li>\r
+</ul>\r
+<h3><a name="2_3"></a>2.3 Link between transient and persistent formats</h3>\r
+<p>It will be possible to complete the definition of one object in the study by associating to it an attribute\r
+<i>HDFPath</i> which will contain the path to the persistent data.</p>\r
+<img src="Link.gif"> \r
+<p><a href="#cont"><b><i>Back to the contents</i></b></a></p>\r
+<h2><a name="3"></a>3. Services and features of the study</h2>\r
+<p>The Study in SALOME application possess a wide functionality. This functionality is provided by a set of classes which are described\r
+below.\r
+<h3><a name="3_1"></a>3.1 Study class</h3>\r
+<p>The purpose of the Study class is to manage the data produced by various components \r
+  of SALOME platform. Most of the Study operations are handled by the <a href="#3_3">StudyManager</a> \r
+  and the <a href="#3_2">StudyBuilder</a>. What \r
+  is left in the Study class are elementary inquiries. A Study is explored by \r
+  a set of tools, mainly iterators , which are described further.</p> \r
+  <p>Nevertheless, the Study class contains a set of methods providing: </p>\r
+  \r
+<ul>\r
+  <li>management of study properties \r
+  <li> search for SObjects. \r
+  <li>search for SComponents\r
+  <li>creation of a new StudyBuilder, ComponentIterator, ChildIterator etc.\r
+</ul>\r
+<p>The API reference for this class can be found <a href="interfaceSALOMEDS_1_1Study.html">here</a>.</p>\r
+<h3><a name="3_2"></a>3.2 StudyBuilder class</h3>\r
+<p>StudyBuilder supplies basic services to edit the study. The edition of the study is made by the\r
+component. Every component will use the basic services of the StudyBuilder allowing to write and publish objects.</p>\r
+<p>StudyBulder provides the following functionality:</p>\r
+<ul>\r
+  <li>creation, modification or deletetion of SObjects in the study</li>\r
+  <li>creation or removal of SComponents </li>\r
+  <li>undo/redo functionality. For that purpose it supplies the methods NewCommand, \r
+    CommitCommand, AbortCommand. </li>\r
+</ul>\r
+<p>The API reference for this class can be found <a href="interfaceSALOMEDS_1_1StudyBuilder.html">here</a>.</p>\r
+<h3><a name="3_3"></a>3.3 StudyManager class</h3>\r
+<p>The purpose of the Manager is to manipulate Studies. Since SALOME is a multi-document \r
+  application during a working session you can operate as many stadies as you \r
+  wishes to create. </p>\r
+<p>For that purpose StudyManager provides the following functionality:</p>\r
+<ul>\r
+  <li>creation, opening, closing and saving studies</li>\r
+  <li>navigation through a set of studies present in the current working session</li>\r
+  <li> copy/paste of the objects in the study functionality.</li>\r
+</ul>\r
+<p>The API reference for this class can be found <a href="interfaceSALOMEDS_1_1StudyManager.html">here</a>.</p>\r
+<h3><a name="3_4"></a>3.4 SObject class</h3>\r
+<p>The objects in the study are built by the StudyBuilder. \r
+The SObject class provides methods for elementary inquiries, like getting an object ID or its attribuites. </p>\r
+<p>The API reference for this class can be found <a href="interfaceSALOMEDS_1_1SObject.html">here</a>.</p>\r
+<h3><a name="3_5"></a>3.5 SComponent class</h3>\r
+<p>The SComponent class establishes in the study a permanent assocition to the components \r
+integrated into SALOME platform. The SComponent interface is a specialization of the SObject\r
+ class. It inherits the most of its methods from the SObject class which are used for management of the SComponents.</p>\r
+<p>The API reference for this class can be found <a href="interfaceSALOMEDS_1_1SComponent.html">here</a>.</p>\r
+<h3><a name="3_6"></a>3.6 ChildIterator class</h3>\r
+<p>It is one of the tools destined for exploration of the study. This class contains a set of methods allowing to get \r
+the access to all identified objects which are sons of another identifiedobject.</p>\r
+<p>The API reference for this class can be found <a href="interfaceSALOMEDS_1_1ChildIterator.html">here</a>.</p>\r
+<h3><a name="3_7"></a>3.7 SComponentIterator</h3>\r
+<p>This is the second tool destined for exploration of the study. This interface contains the methods allowing to iterate over all SComponents in the list.\r
+ The search is started from the first SComponent in the list. </p>\r
+<p>The API reference for this class can be found <a href="interfaceSALOMEDS_1_1SComponentIterator.html">here</a>.</p> \r
\r
+<h3><a name="3_8"></a>3.8 GenericAttribute class </h3>\r
+ <p>GenericAttribute represents a base class for all attributes which can be assigned to the SObjects created in the study. All attribute classes \r
+ derive from this classe and inherit its methods. </p>\r
+ <p>The API reference for this class can be found <a href="interfaceSALOMEDS_1_1GenericAttribute.html">here</a>.</p> \r
\r
+<p>In SALOME application a SObject can possess the following attributes:</p>\r
+<table width="48%" border="0">\r
+  <tr>\r
+    <td width="44%" height="241"> \r
+      <ul>\r
+       <li><a href="interfaceSALOMEDS_1_1AttributeName.html">AttributeName</a></li>\r
+ <li><a href="interfaceSALOMEDS_1_1AttributeComment.html">AttributeComment</a></li>\r
+ <li><a href="interfaceSALOMEDS_1_1AttributeIOR.html">AttributeIOR</a></li>\r
+ <li><a href="interfaceSALOMEDS_1_1AttributeReal.html">AttributeReal</a></li>\r
+ <li><a href="interfaceSALOMEDS_1_1AttributeInteger.html">AttributeInteger</a></li>\r
+ <li><a href="interfaceSALOMEDS_1_1AttributeSequenceOfReal.html">AttributeSequenceOfReal</a></li>\r
+ <li><a href="interfaceSALOMEDS_1_1AttributeSequenceOfInteger.html">AttributeSequenceOfInteger</a></li>\r
+ <li><a href="interfaceSALOMEDS_1_1AttributePersistentRef.html">AttributePersistentRef</a></li>\r
+ <li><a href="interfaceSALOMEDS_1_1AttributeDrawable.html">AttributeDrawable</a></li>\r
+ <li><a href="interfaceSALOMEDS_1_1AttributeSelectable.html">AttributeSelectable</a></li>\r
+ <li><a href="interfaceSALOMEDS_1_1AttributeExpandable.html">AttributeExpandable</a></li>\r
+ <li><a href="interfaceSALOMEDS_1_1AttributeOpened.html">AttributeOpened</a></li>\r
+ </ul></td>\r
+    <td width="56%" height="241"> \r
+      <ul>\r
+ <li><a href="interfaceSALOMEDS_1_1AttributeTextColor.html">AttributeTextColor </a></li>\r
+ <li><a href="interfaceSALOMEDS_1_1AttributeTextHighlightColor.html">AttributeTextHighlightColor</a></li>\r
+ <li><a href="interfaceSALOMEDS_1_1AttributePixMap.html">AttributePixMap</a></li>\r
+ <li><a href="interfaceSALOMEDS_1_1AttributeTreeNode.html">AttributeTreeNode</a></li>\r
+ <li><a href="interfaceSALOMEDS_1_1AttributeLocalID.html">AttributeLocalID</a></li>\r
+ <li><a href="interfaceSALOMEDS_1_1AttributeUserID.html">AttributeUserID</a></li>\r
+ <li><a href="interfaceSALOMEDS_1_1AttributeTarget.html">AttributeTarget</a></li>\r
+ <li><a href="interfaceSALOMEDS_1_1AttributeTableOfInteger.html">AttributeTableOfInteger</a></li>\r
+ <li><a href="interfaceSALOMEDS_1_1AttributeTableOfReal.html">AttributeTableOfReal</a></li>\r
+ <li><a href="interfaceSALOMEDS_1_1AttributeTableOfString.html">AttributeTableOfString</a></li>\r
+ <li><a href="interfaceSALOMEDS_1_1AttributeStudyProperties.html">AttributeStudyProperties</a></li>\r
+ <li><a href="interfaceSALOMEDS_1_1AttributePythonObject.html">AttributePythonObject</a></li>  \r
+ </ul></td>\r
+  </tr>\r
+</table>\r
+<h3><a name="3_9"></a>3.9 UseCaseBuilder class</h3>\r
+<p>UseCase in the study represents a user-defined subtree, containing all or some of the objects which currently exist \r
+in the study. The UseCaseBuilder class contains a set of methods used for management (creation, deletion etc) of this sub-tree in the study. </p>\r
+<p>The API reference for this class can be found <a href="interfaceSALOMEDS_1_1UseCaseBuilder.html">here</a>.</p>\r
\r
+<h3><a name="3_10"></a>3.10 UseCaseIterator</h3>\r
+ <p>This class represents an exploration tool for the UseCase. It contains a set of methods used for iteration over the objects in the UseCase.</p> \r
+ <p>The API reference for this class can be found <a href="interfaceSALOMEDS_1_1UseCaseIterator.html">here</a>.</p>\r
\r
+<h3><a name="3_11"></a>3.11 Callback class</h3>\r
+ <p>The StudyBuilder can be created with the method NewBuilder. While invocation of this method a new object of the class \r
+ Callback is created and this object is assigned to the newly created Builder as callback which should be called \r
+ when <i>adding</i> and <i>removing</i> the objects. </p>\r
+ <p>The API reference for this class can be found <a href="interfaceSALOMEDS_1_1Callback.html">here</a>.</p>\r
\r
+<h3><a name="3_12"></a>3.12 Driver class</h3>\r
\r
+<p>This class represents a common tool for all components integrated into SALOME \r
+  application, that allows them to communicate with the study. It contains a set \r
+  of methods which can be called by any component and which provide the following \r
+  functionality:\r
+<ul>\r
+  <li>publishing in the study of the objects created by a definite component </li>\r
+  <li>saving/loading of the data created by a definite component. These methods \r
+    are called by the StudyManager when loading/saving a study containing the \r
+    data created by a definite component.</li>\r
+  <li>transforming of the transient references into persistant references (or \r
+    vice versa) of the SObjects when saving (or loading) a study</li>\r
+  <li>copy/paste common functionality. These methods can be called by any component \r
+    in order to copy/paste its object created in the study</li>\r
+</ul>\r
+<p>The API reference for this class can be found <a href="interfaceSALOMEDS_1_1Driver.html">here</a>.</p>\r
+<p><a href="#cont"><b><i>Back to the contents</i></b></a></p>\r
+</body>\r
+</html>\r