<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <title>Tutorial / More for techies</title> <link rel='stylesheet' href='../styles.css' type='text/css' /> <!--PageHeaderFmt--> </head> <body> <div id="container"> <div id="menubar"> <div id="logo" align="center"> <br/><img src='../frepple.bmp' alt="frepple" /><br/> <a href='http://www.frepple.com/'> <strong>a Free<br/>Production Planning<br/>Library</strong> </a></div> <div id="menu"> <br/> <h3><a href='../Main/HomePage.html'>Main</a></h3> <h3><a href='../UI/Main.html'>User Manual</a></h3> <h3><a href='Main.html'>Tutorial</a></h3> <h3><a href='../Frepple/Main.html'>Reference Manual</a></h3> <h3><a href='../Main/FAQ.html'>FAQ</a></h3> <h3><a href='../reference/index.html'>C++ API</a></h3> <br/><div> </div> </div> </div> <div id="content"> <br/> <!--PageText--> <div id='wikitext'> <p><a class='wikilink' href='../Main/HomePage.html'>Main</a> > <span class='wikitrail'><a class='wikilink' href='Main.html'>frePPLe Tutorial</a> > <a class='selflink' href='Step10.html'>More for techies</a></span> </p> <p class='vspace'>This tutorial didn't cover the technical aspects of frePPLe at all.<br />This section explains a little more on the technical implementation. </p> <div class='vspace'></div><ul><li>FrePPLe has three different components: <div class='vspace'></div><ul><li>The <strong>core library</strong> implements the modeling constructs and solver.<br /> This component is written in C++ for optimal performance, and is basically a shared libary and its public API.<br /> The native data format of the core library is XML.<br /> A planning solution is much, much more than only a planning model and solver algorithms: It includes a user interface, data maintenance, reporting, data integration to other systems, workflows, job schedules, etc... Additional layers on top of the core library allow these to be handled efficiently and flexibly. <div class='vspace'></div></li><li>For flexible <strong>scripting and data integration</strong> frePPLe relies on Python.<br /> <a target='_blank' class='urllink' href='http://www.python.org' rel='nofollow'>Python</a> is a modern dynamic object-oriented programming language with a rich standard library. FrePPLe provides an interface to this language: python scripts bring data in the core library and extract data from it. <div class='vspace'></div></li><li>The <strong>user interface</strong> is based on Django.<br /> <a target='_blank' class='urllink' href='http://www.djangoproject.com' rel='nofollow'>Django</a> is an impressive high-level web framework , written in Python, that encourages rapid development and clean, pragmatic design. </li></ul><div class='vspace'></div></li><li>These frePPLe components can be used in many ways. The deployment architecture varies depending on the problem size, the number of users, data integration to other systems, etc...<br /> See the <a class='wikilink' href='../Frepple/OverviewArchitecture.html'>architecture section</a> in the reference manual for some example configurations. <div class='vspace'></div></li><li>FrePPLe is designed to be extendible and customizable.<br /> Speaking to developers in their own language, for each of the components above some sample code is shown here to illustrate how customizations can be done. <div class='vspace'></div><ul><li>The <strong>core library</strong> can be extended with plugin modules written in c++.<br /> This example shows how a new operation type is introduced for modeling transportation operations easier. The code is compiled to a shared library that is loaded at runtime by the core library.<br /> <a target='_blank' class='urllink' href='http://frepple.svn.sourceforge.net/viewvc/frepple/trunk/test/sample_module/sample_module.h?view=markup' rel='nofollow'>sample_module.h</a><br /> <a target='_blank' class='urllink' href='http://frepple.svn.sourceforge.net/viewvc/frepple/trunk/test/sample_module/sample_module.cpp?view=markup' rel='nofollow'>sample_module.cpp</a> <div class='vspace'></div></li><li>The core library supports <strong>scripting using the Python language</strong>.<br /> With the <a target='_blank' class='urllink' href='http://docs.python.org/lib/lib.html' rel='nofollow'>rich standard library of Python</a> FrePPLe can thus easily be customized to fit your data formats and integration technology.<br /> The first example shows how we are retrieving data from a database, formatting it in memory to XML and passing it to the core library.<br /> The other examples show how we export data from the core library into a database or csv-formatted files.<br /> <a target='_blank' class='urllink' href='http://frepple.svn.sourceforge.net/viewvc/frepple/trunk/contrib/django/freppledb/execute/load.py?view=markup' rel='nofollow'>load.py</a><br /> <a target='_blank' class='urllink' href='http://frepple.svn.sourceforge.net/viewvc/frepple/trunk/contrib/django/freppledb/execute/export_database.py?view=markup' rel='nofollow'>export_database.py</a><br /> <a target='_blank' class='urllink' href='http://frepple.svn.sourceforge.net/viewvc/frepple/trunk/contrib/django/freppledb/execute/export_file.py?view=markup' rel='nofollow'>export_file.py</a> <div class='vspace'></div></li><li>Customizing the <strong>user interface</strong> is very easy with the Django web framework. Updating the database model and screens to your specific workflows and business requirements can be done with very efficiently.<br /> The file below is the code required to define the input database schema and configure the data maintenance screens.<br /> <a target='_blank' class='urllink' href='http://frepple.svn.sourceforge.net/viewvc/frepple/trunk/contrib/django/freppledb/input/models.py?view=markup' rel='nofollow'>models.py</a> </li></ul></li></ul> </div> <!--PageFooterFmt--> <!--HTMLFooter--> </div></div> </body> </html>