architecture description
authorkonrad <konrad@6e3c4bff-ac9f-4ac1-96c5-d2ea494d3e33>
Thu, 22 Jul 2010 20:28:05 +0000 (20:28 +0000)
committerkonrad <konrad@6e3c4bff-ac9f-4ac1-96c5-d2ea494d3e33>
Thu, 22 Jul 2010 20:28:05 +0000 (20:28 +0000)
git-svn-id: https://silmor.de/svn/softmagic/smoke/trunk@570 6e3c4bff-ac9f-4ac1-96c5-d2ea494d3e33

doc/prog_arch.html

index e8f9f81..de4119a 100644 (file)
@@ -33,7 +33,35 @@ A more complete rendering of the architecture:<br>
 <tr><td colspan="3" bgcolor="#0000c0"><font color="#ffffff">MySQL or PgSQL Database</font></tr>
 </table><p>
 
-<h2>Backend: WOBs and WOLFs</h2>
+<h2>Backend: Howling with the WOLFs</h2>
+
+The storage and communication infrastructure of MagicSmoke is based on the <a href="pack/index.html">PACK</a> framework. It is controlled by WOLFs - or Web Object Language Files. Those files are located in the <b>wob</b> folder:<p>
+
+<b>wob/magicsmoke.wolf</b> links all of the control files together and configures what is generated from them.<p>
+
+<b>wob/db/*</b> contains a complete description of the database layout.<p>
+
+<b>wob/classes/*</b> contains classes describing the domain objects of MagicSmoke and how they are converted to and from database objects.<p>
+
+<b>wob/transact/*</b> contain all transactions that can be performed on the server - input and output parameters of the transactions and what part of the server code is responsible for implementing it.<p>
+
+<b>.../basics.wolf</b> helping classes and transactions that do basic bookkeeping for MagicSmoke.<p>
+
+<b>.../audit.wolf</b> auditing functionality - auditing stores historical changes for certain data elements.<p>
+
+<b>.../cart.wolf</b> configures functionality related to the shoppin cart in the web UI.<p>
+
+<b>.../customer,wolf</b> contains customer data and related functions.<p>
+
+<b>.../db.wolf</b> basic configuration of the database.<p>
+
+<b>.../event.wolf</b> contains data and functions related to events, their scheduling, changing them, etc.<p>
+
+<b>.../order.wolf</b> is about ordering things, contains tickets, ordered items, vouchers, ...<p>
+
+<b>.../template.wolf</b> contains the infrastructure to store document templates used by the MagicSmoke to render tickets, vouchers, bills,...<p>
+
+<b>.../user.wolf</b> management of users, roles and rights for the standalone client.<p>
 
 <h2>Server: Interfaces</h2>
 
@@ -67,11 +95,68 @@ A more complete rendering of the architecture:<br>
 
 <b>www/inc/rendering</b> classes related to rendering pages of the customer interface.<p>
 
-<b>www/inc/wob</b> automatically generated code for the transactions that the MagicSmoke server can perform. The web object classes (WO*) defined here are used throughout the server to represent data in the MagicSmoke database, The transaction classes (Wtr*) defined here are used both by the machine interface and the customer interface to execute specific queries on the backend. See the <a href="wob/index.html">Web Object</a> docu for a language independent description of those classes and the <a href="php-source/index.html">PHP source</a> docu for implementation details.<p>
+<b>www/inc/wob</b> automatically generated code for the transactions that the MagicSmoke server can perform. The web object classes (WO*) defined here are used throughout the server to represent data in the MagicSmoke database, The transaction classes (Wtr*) defined here are used both by the machine interface and the customer interface to execute specific queries on the backend. See the <a href="wob/index.html">Web Object</a> docu for a language independent description of those classes and the <a href="source-php/index.html">PHP source</a> docu for implementation details.<p>
 
 <b>www/inc/wext</b> extensions to abstract web object classes. These extensions implement specific handling of some data items, calculations of some properties, and the implementation of most of the transactions.<p>
 
 <h2>Qt based Client</h2>
 
+<h3>External Dependencies</h3>
+
+The client relies on several external libraries:<p>
+
+<b>pack/qtbase</b> - the <a href="pack/index.html">PACK</a> base classes, used for the communication with the server.<p>
+
+<b>tzone</b> - the time zone database, which is used for converting time stamps received from the server into the correct time zone of the theater.<p>
+
+<b>zip</b> - code to read and write ZIP files - this is used for templates.<p>
+
+<h3>Sources</h3>
+
+The client itself is stored in the <b>src</b> directory, with the following sub-directories:<p>
+
+<b>crypto</b> - implementations of some basic cryptographic functions used for authentication.<p>
+
+<b>dialogs</b> - various dialogs used by the program.<p>
+
+<b>iface</b> - an extension to the communication interface of PACK to meet MagicSmoke's needs.<p>
+
+<b>images</b> - image files used by MagicSmoke.<p>
+
+<b>misc</b> - small helper classes, minor widgets<p>
+
+<b>mwin</b> - tabs of the main window.<p>
+
+<b>templates</b> - rendering classes for ODF and ticket printing.<p>
+
+<b>tests</b> - unit tests.<p>
+
+<b>wext</b> - extensions of abstract generated classes.<p>
+
+<b>widgets</b> - base utility widgets.<p>
+
+<b>wob</b> - generated Web Object code. Do not change anything in this directory.<p>
+
+<h3>Build Order</h3>
+
+Either <a href="build.html">build</a> the entire system using the Makefile in the main directory or follow these steps:
+
+<ol>
+<li>build the web object compiler in <b>pack/woc</b>
+<li>go to the <b>wob</b> directory and call <tt>make</tt> (or call <tt>../pack/woc/woc&nbsp;magicsmoke.wolf</tt>)
+<li>build the libraries in <b>pack/qtbase</b>, <b>tzone</b>, and <b>zip</b>
+<li>go to <b>src</b> and build MagicSmoke
+</ol>
+
+Each of the libraries and MagicSmoke itself are built by using <tt>qmake</tt> to create the necessary makefiles and <tt>make</tt> to compile.
+
+<h3>Source Documentation</h3>
+
+<ul>
+<li><a href="pack/index.html">PACK</a> documentation
+<li>client <a href="source-cpp/index.html">source</a> documentation
+<li><a href="tzone/index.html">Time Zone</a> library documentation
+<li>generated <a href="wob/index.html">Web Object</a> descriptions, language independent
+</ul>
 
 </html>
\ No newline at end of file