Python interpreter
FrePPle embeds an interpreter for the Python language. The full capabilities
of this scripting language are accessible from frePPLe, and Python also has
access to the frePPLe objects in memory. Python is thus a very powerful way
to interact with frePPLe.
Python code can be executed in two ways:
A XML processing instruction in XML data files.
<?xml version="1.0" encoding="UTF-8" ?>
<plan xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
...
<?python
Your python code goes here.
?>
...
</plan>
Python code in a file init.py, located in one of the frePPLe directories,
is executed automatically when frePPLe starts. This provides a clean
mechanism to define global Python functions and classes your application
needs.
The interpreter is multi-threaded. Multiple python scripts can run in parallel.
However, Python internally executes only one thread at a time and the
interpreter switches between the active threads. A single, global interpreter
instance is used. A global Python variable or function is thus visible across
multiple invocations of the Python interpreter.
The following Python functions are defined:
- loadmodule dynamically loads an extension module.
- readXMLfile processes a XML-file from the local file system.
- readXMLdata processes a XML-formatted string.
- erase removes part of the model or plan from memory.
- saveXMLfile saves the model to an XML-formatted file.
- saveplan saves the most important plan information to a file.
- printsize prints information about the memory size of the model.
loadmodule
This command dynamically loads an extension module.
It takes as arguments:
The name of the shared library file to be loaded.
The module file should be found in the directory list defined with the
environment variable PATH (Windows) or LD_LIBRARY_PATH (Linux).
Parameter and value pairs
Initialization and configuration values that are passed to the module’s
initialization routine.
A parameter consists of a PARAMETER and VALUE pair.
Example code:
<?python
frepple.loadmodule("your_module.so",
parameter1="string value",
parameter2=100,
parameter3=True)
?>
readXMLfile
This command reads and processes a XML-file from the local file system.
It takes as arguments:
filename
Name of the data file to be loaded.
validate boolean
A boolean flag that activates validation of the XML data against the
XML-schema.
The default value is true, for security reasons.
When parsing large files with a trusted structure setting this field
to false will speed up the import.
validate_only
If this optional boolean argument is equal to true the input data are
only validated against the XML-schema. The data are not processed in
the core application.
callback
An optional callback Python function that is called when an object
has been read from the input data.
The object is passed as argument.
Example code:
<?python
frepple.readXMLfile("input.xml",True,True)
?>
readXMLdata
This command processes a XML-formatted data string.
It takes as arguments:
data
XML-formatted data string to be processed.
validate boolean
A boolean flag that activates validation of the XML data against the
XML-schema.
The default value is true, for security reasons.
When parsing large files with a trusted structure setting this field
to false will speed up the import.
validate_only
If this optional boolean argument is equal to true the input data are
only validated against the XML-schema. The data are not processed in
the core application.
callback
An optional callback Python function that is called when an object
has been read from the input data.
The object is passed as argument.
Example code:
<?python
frepple.readXMLdata('''
<plan xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<locations>
<location name="Location 1" action="R"/>
</locations>
</plan>''',True,True)
?>
erase
Use this command to erase the plan or the entire model from memory.
It takes as arguments:
mode
When this boolean argument is set to true the complete model is erased.
You will again have a completely empty model.
When the argument is false only the plan information is erased, ie only
the operationplans with their load- and flowplans are removed (except the ones that are locked).
Example code:
<?python
frepple.erase(False)
?>
saveXMLfile
This commands saves the model into an XML file.
It takes as arguments:
filename
Name of the output file.
content
Controls the level of detail in the output. Possible values are:
- STANDARD: plan information is sufficient for restoring the model from
the output file. This is the default mode.
- PLAN: adds more detail about its plan with each entity. A buffer will
report on its flowplans, a resource reports on its loadplans, and a
demand on its delivery operationplans.
- PLANDETAIL: goes even further and includes full pegging information
the output. A buffer will report how the material is supplied and which
demands it satisfies, a resource will report on how the capacity used
links to the demands, and a demand shows the complete supply path used
to meet it.
headerstart
The first line of the XML output.
The default value is: <?xml version=”1.0” encoding=”UTF-8”?>
headeratts
Predefined attributes of the XML root-element.
The default value is: xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
Example code:
<?python
frepple.saveXMLfile("output.xml")
frepple.saveXMLfile("detailedoutput.xml","PLANDETAIL")
?>
saveplan
This command saves the most important plan information to a file.
It is used for the unit tests, but its’ usefulness in a real-life implementation is probably limited.
The only argument it takes is the name of the output file.
Example code:
<?python
frepple.saveplan("output.xml")
?>
printsize
This command prints information about the memory size of the model and other sytem parameters.
Example code:
<?python
frepple.printsize()
?>