Wolframe documentation

Aug 29, 2014


Table of Contents

Developing Wolframe Server Applications
Foreword
1. Introduction
1.1. Architecture
1.1.1. Presentation tier
1.1.2. Logic tier
1.1.3. Data tier
2. Installation via binary packages
2.1. Linux distributions
2.1.1. RedHat, Fedora, CentOS, Scientific Linux and similar Linux distributions
Available packages
Prerequisites
Install binary packages manually
Install from repository
2.1.2. Debian, Ubuntu and similar Linux distributions
Available packages
Prerequisites
Install binary packages manually
Install from repository
2.1.3. openSUSE, SLES and similar Linux distributions
Available packages
Prerequisites
Install binary packages manually
Install from repository
2.1.4. ArchLinux
Available packages
Prerequisites
Install binary packages manually
Install from repository
Install from the AUR
2.1.5. Slackware
Available packages
Prerequisites
Install binary packages manually
2.2. Other Unix systems
2.2.1. FreeBSD
2.2.2. NetBSD
2.2.3. Solaris 10
3. Configuration
3.1. Service or daemon configuration
3.1.1. Windows
3.1.2. Unix
3.2. Server configuration
3.2.1. Listen
3.2.2. ListenSSL
3.2.3. IP restrictions
3.3. Logger configuration
3.3.1. Log message types and log levels
3.3.2. Log backends
Backend console
Backend logfile
Backend syslog
Backend eventlog
3.4. Modules
3.5. Global settings
3.6. Database configuration
3.6.1. PostgreSQL
Requirements
Configuration settings
Example configuration
3.6.2. Sqlite3
Requirements
Configuration settings
Example configuration
3.6.3. Oracle
Requirements
Configuration settings
Example configuration
4. AAAA
4.1. Introduction
4.2. Embedding AAAA into an existing infrastructure
4.3. AAAA configuration
4.4. Authentication
4.4.1. Requirements
4.4.2. Configuration settings
4.4.3. Example configuration
4.4.4. Authentication mechs
4.4.5. Development status
4.5. Authorization
4.5.1. Authorization based on connection info
4.5.2. Authorization based on identity
4.5.3. Command execution authorization
Development status
4.6. Auditing and accounting
4.6.1. Development status
5. Data processing
5.1. Processor Configuration
5.2. Application Server Requests
5.3. Command handler
5.3.1. The standard command handler
Introduction
Example configuration
Example command description
Command description language
Keywords
Simple document map
Command with action prefix
Explicit function name declaration
Returned document declaration
Returned document meta data
Skipping the document validation
Return a standalone document
Explicit filter definitions for a command
Authorization checks
Adding parameters from the execution context
Using brackets
Overview
5.4. Functions
5.4.1. Transactions in TDL
Introduction
Some internals
Configuration
Language description
Subroutines
Transaction function declarations
Main processing instructions
Preprocessing instructions
Selector path
Referencing Database Results
Naming database results
Referencing Subroutine Parameters
Constraints on database results
Rewriting error messages for the client
substructures in the result
Explicit sefinition of elements in the result
Database specific code
Subroutine templates
Includes
Auditing
5.4.2. Functions in .NET
Introduction
Configuration
Function interface
Function context
Function signature
Example
Prepare .NET assemblies
Make assemblies COM visible
Tag exported objects with a Guid
Add marshalling tags to values
Example with COM introspection tags
Create a type library
Register the type library
Register the assembly in the GAC
Register the types in the assembly
Calling Wolframe functions
Configure .NET assemblies
Assembly Declaration
Get the PublicKeyToken
Validation issues
5.4.3. Functions in python
Current development status
5.4.4. Functions in Lua
Introduction
Configuration
Declaring functions
Wolframe provider library
Using atomic data types
Data type 'datetime'
Data Type 'bignumber'
Filter interface iterators
Iterator library
Global objects
Using forms
Form functions
List of Lua objects
5.4.5. Functions in native C++
Introduction
Prerequisites
Declaring functions
Example Function Declaration
Input/output data structures
Header file
Source file
Writing the module
Module declaration
Building the module
Using the module
Validation issues
5.5. Forms
5.5.1. Form data definition languages
Introduction
Forms in simpleform DDL
Commands
Structures
Elements of structures
Embedded structure definitions
Default atomic value assignments
Types of atomic values
Element attributes
Embedding elements and inheritance
Declaring document meta data
Example form definition
5.5.2. Datatypes in DDLs
Introduction
Example
Language description
Type assignments
Standard modules for normalizers
Configuration
5.6. Filters
5.6.1. XML Filter
Introduction
Character set encodings
Configuration
5.6.2. JSON filter
Introduction
Character set encodings
Configuration
5.6.3. XSLT Filter
Introduction
Character set encodings
Configuration
5.7. Testing and defect handling
5.7.1. Using wolfilter
Test configuration
Testing a filter
Testing a Form
Testing a Function
Glossary
Index
A. GNU General Public License version 3
Wolframe Clients
1. Introduction
2. Clients with PHP
2.1. Requirements
2.2. PHP client modules
2.2.1. Example script implementing a request
2.2.2. Example script for a password change
2.2.3. The session interface
2.3. Installation
3. Clients with .NET (C#)
3.1. C# client modules
3.1.1. Example script
3.1.2. The session interface
3.1.3. The session constructor
4. Clients with Qt
4.1. Architecture
4.2. Artifacts
4.2.1. UI forms
4.2.2. UI form translations
4.2.3. Resources
4.3. Programming the interface
4.3.1. Mapping XML data
Starting position
First example
Another example
4.3.2. Switching UI forms
4.3.3. States and behaviour
Reserved private dynamic properties
Reserved public dynamic properties
Stearing of widget behaviour
User interface flow
Additional interface elements
Defining server request/answer
Variables and symbolic links
Widget states depending on data
Additional signals and slots
Drag and drop
4.3.4. Widget properties as dynamic property values
4.4. Programming server requests/answers
4.4.1. Adressing widget data
Biggest common ancestor path
Addressing atomic elements
Special path elements
Addressing the form widget
Widget links
4.4.2. Data structures
Example
4.4.3. Arrays
Description
Example
4.4.4. Indirection and recursion
Description
Example (arbitrary tree)
Example (binary tree)
4.5. Eliminating interface defects
4.5.1. Switch the developer mode on
4.5.2. Inspect errors and warnings and debug messages reported
Index
Wolframe Installation from Source
1. Installation from source
1.1. Source Releases
1.2. Building on Unix systems
1.2.1. Prerequisites
1.2.2. Basic build instructions
1.2.3. GCC compiler
1.2.4. clang compiler
1.2.5. Intel compiler
1.2.6. Using ccache and distcc
1.2.7. Platform-specific build instructions
FreeBSD
NetBSD
OpenIndiana 151a8
Solaris 10
1.2.8. Boost
Build your own version of Boost
RedHat, Fedora, CentOS, Scientific Linux and similar Linux distributions
RedHat/Centos/Scientific Linux 5 and similar Linux distributions
RedHat 6
Centos/Scientific Linux 6 and similar Linux distributions
RedHat/Centos/Scientific Linux 7 and similar Linux distributions
Fedora and similar Linux distributions
Debian, Ubuntu and similar Linux distributions
Debian 6
Debian 7
Ubuntu 10.04.1 LTS, Ubuntu 12.04
Ubuntu 13.10 and 14.04
openSUSE, SLES and similar Linux distributions
OpenSuSE 12.3, 13.1
SLES 11 SP1, SP2 and SP3
ArchLinux
Slackware
FreeBSD 10
FreeBSD 8 and 9
NetBSD
OpenIndiana 151a8
Solaris 10
1.2.9. Secure Socket Layer (SSL)
RedHat, Fedora, CentOS, Scientific Linux and similar Linux distributions
Debian, Ubuntu and similar Linux distributions
openSUSE, SLES and similar Linux distributions
ArchLinux
Slackware
FreeBSD
NetBSD
OpenIndiana 151a8
Solaris 10
1.2.10. SQLite database support
RedHat/Centos/Scientific Linux 5 and similar Linux distributions
RedHat/Centos/Scientific Linux 6 and 7, Fedora and similar Linux distributions
Debian, Ubuntu and similar Linux distributions
openSUSE, SLES and similar Linux distributions
ArchLinux
Slackware
FreeBSD
NetBSD
OpenIndiana 151a8
Solaris 10
1.2.11. PostgreSQL database support
RedHat, Fedora, CentOS, Scientific Linux and similar Linux distributions
Debian, Ubuntu and similar Linux distributions
openSUSE, SLES and similar Linux distributions
ArchLinux
Slackware
FreeBSD 10
FreeBSD 8 and 9
NetBSD
OpenIndiana 151a8
Solaris 10
1.2.12. Oracle database support
RedHat, Fedora, CentOS, Scientific Linux and similar Linux distributions
Debian, Ubuntu and similar Linux distributions
openSUSE, SLES and similar Linux distributions
ArchLinux
Slackware
FreeBSD
NetBSD
OpenIndiana 151a8
Solaris 10
1.2.13. XML filtering support with libxml2 and libxslt
RedHat/Centos/Scientific Linux 5 and similar Linux distributions
RedHat/Centos/Scientific Linux 6 and 7, Fedora and similar Linux distributions
Debian, Ubuntu and similar Linux distributions
openSUSE, SLES and similar Linux distributions
ArchLinux
Slackware
FreeBSD
NetBSD
OpenIndiana 151a8
Solaris 10
1.2.14. XML filtering support with Textwolf
1.2.15. JSON filtering support with cJSON
1.2.16. Scripting support with Lua
1.2.17. Scripting support with Python
RedHat/Centos/Scientific Linux 5, 6 and 7 and similar Linux distributions
Fedora and similar Linux distributions
Debian, Ubuntu and similar Linux distributions
openSUSE, SLES and similar Linux distributions
ArchLinux
Slackware
FreeBSD 10
FreeBSD 8 and 9
NetBSD
OpenIndiana 151a8
Solaris 10
1.2.18. Printing support with libhpdf
RedHat/Centos/Scientific Linux, Fedora and similar Linux distributions
Debian, Ubuntu and similar Linux distributions
openSUSE, SLES and similar Linux distributions
ArchLinux
Slackware
FreeBSD 10
FreeBSD 8 and 9
NetBSD
OpenIndiana 151a8
Solaris 10
1.2.19. Image processing with FreeImage
RedHat/Centos/Scientific Linux and similar Linux distributions
Fedora and similar Linux distributions
Debian, Ubuntu and similar Linux distributions
openSUSE, SLES and similar Linux distributions
ArchLinux
Slackware
FreeBSD 10
FreeBSD 8 and 9
NetBSD
OpenIndiana 151a8
Solaris 10
1.2.20. zlib and libpng
1.2.21. Support for ICU
RedHat/Centos/Scientific Linux, Fedora and similar Linux distributions
Fedora and similar Linux distributions
Debian, Ubuntu and similar Linux distributions
Debian 6
Debian 7
Ubuntu 10.04.1 LTS, Ubuntu 12.04
Ubuntu 13.10 and 14.04
openSUSE, SLES and similar Linux distributions
OpenSuSE 12.3, 13.1
SLES 11 SP1, SP2 and SP3
ArchLinux
Slackware
FreeBSD 10
FreeBSD 8 and 9
NetBSD
OpenIndiana 151a8
Solaris 10
1.2.22. Internationalization support with gettext
Linux distributions
FreeBSD
NetBSD
OpenIndiana 151a8
Solaris 10
1.2.23. Authentication support with PAM
RedHat/Centos/Scientific Linux, Fedora and similar Linux distributions
Debian, Ubuntu and similar Linux distributions
openSUSE, SLES and similar Linux distributions
ArchLinux
Slackware
FreeBSD
NetBSD
OpenIndiana 151a8
Solaris 10
1.2.24. Authentication support with SASL
RedHat/Centos/Scientific Linux, Fedora and similar Linux distributions
Debian, Ubuntu and similar Linux distributions
openSUSE, SLES and similar Linux distributions
ArchLinux
Slackware
FreeBSD
NetBSD
OpenIndiana 151a8
Solaris 10
1.2.25. Testing Wolframe
1.2.26. Testing with Expect
RedHat/Centos/Scientific Linux, Fedora and similar Linux distributions
Debian, Ubuntu and similar Linux distributions
openSUSE, SLES and similar Linux distributions
ArchLinux
Slackware
FreeBSD
NetBSD
OpenIndiana 151a8
Solaris 10
1.2.27. Building the documentation
RedHat/Centos/Scientific Linux and similar Linux distributions
Fedora and similar Linux distributions
Debian, Ubuntu and similar Linux distributions
openSUSE, SLES and similar Linux distributions
ArchLinux
Slackware
FreeBSD
NetBSD
1.2.28. Installation
1.2.29. Manual dependency generation
1.2.30. Creating source tarballs
1.2.31. Building the wolfclient
RedHat/Centos/Scientific Linux 5 and similar Linux distributions
RedHat/Centos/Scientific Linux 6 and 7 or similar Linux distributions
Fedora 19 and 20 and similar distributions
Debian 6 and 7
Ubuntu 10.04.1 and 12.04
Ubuntu 13.10 and 14.04
openSUSE 12.3, SLES and similar Linux distributions
openSUSE 13.1
ArchLinux
Slackware
FreeBSD 8 and 9
FreeBSD 10
NetBSD
OpenIndiana 151a8
Solaris 10
1.3. Building on Windows systems (the NMAKE way)
1.3.1. Prerequisites
1.3.2. Basic build instructions
1.3.3. Using ccache and distcc
1.3.4. Boost
Use prebuild version of Boost
Build your own version of Boost
1.3.5. Secure Socket Layer (SSL)
Use prebuild version of OpenSSL
Build your own version of OpenSSL
1.3.6. SQLite database support
1.3.7. PostgreSQL database support
Use prebuild version of PostgreSQL
Build your own version of PostgreSQL
1.3.8. Oracle database support
1.3.9. XML filtering support with libxml2 and libxslt
Use prebuild versions of libxml2 and libxslt
Build your own version of LibXML2
Build your own version of LibXSLT
1.3.10. XML filtering support with Textwolf
1.3.11. JSON filtering support with cJSON
1.3.12. Scripting support with Lua
1.3.13. Scripting support with Python
Use prebuild version of Python
Build you own version of Python
1.3.14. Printing support with libhpdf
1.3.15. Image processing with FreeImage
1.3.16. zlib and libpng
1.3.17. Support for ICU
Use prebuild version of ICU
Build you own version of ICU
1.3.18. Testing Wolframe
1.3.19. Testing with Expect
1.3.20. Building the documentation
1.3.21. Building the wolfclient
Wolframe Server Extension Modules
Foreword
1. Introduction
2. Basic Data Types
2.1. Variant Type
3. Module Declaration
3.1. Module Declaration Frame
3.1.1. Empty Module Declaration Example
3.1.2. Module Declaration Macros
3.2. Building a Module
3.3. Exported Objects of a Module
3.3.1. Define Normalization Functions (Normalizers)
Normalizer Interface
Building Blocks
Declaring a resource singleton object
Declaring a normalizer not using any resource
Declaring a normalizer using a resource
Examples
Example without resources
Example with resources
3.3.2. Define Custom Data Types
Custom Data Type Interface
CustomDataType Structure
CustomDataInitializer Interface
Class CustomDataValue
Building Blocks
Declaring a custom data type
3.3.3. Define Filters
Filter element types
Filter element values
Filter Interface
Input Filter Structure
Output Filter Structure
Filter Structure
Building Blocks
Declaring a filter
Glossary
Index