Main > frePPLe Tutorial > More for techies

This tutorial didn't cover the technical aspects of frePPLe at all.
This section explains a little more on the technical implementation.

  • FrePPLe has three different components:
    • The core library implements the modeling constructs and solver.
      This component is written in C++ for optimal performance, and is basically a shared libary and its public API.
      The native data format of the core library is XML.
      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.
    • For flexible scripting and data integration frePPLe relies on Python.
      Python 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.
    • The user interface is based on Django.
      Django is an impressive high-level web framework , written in Python, that encourages rapid development and clean, pragmatic design.
  • 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...
    See the architecture section in the reference manual for some example configurations.
  • FrePPLe is designed to be extendible and customizable.
    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.
    • The core library can be extended with plugin modules written in c++.
      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.
      sample_module.h
      sample_module.cpp
    • The core library supports scripting using the Python language.
      With the rich standard library of Python FrePPLe can thus easily be customized to fit your data formats and integration technology.
      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.
      The other examples show how we export data from the core library into a database or csv-formatted files.
      load.py
      export_database.py
      export_file.py
    • Customizing the user interface 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.
      The file below is the code required to define the input database schema and configure the data maintenance screens.
      models.py