Developing Wolframe Server Applications

Wolframe Application Development Manual

Commercial Usage.  Licensees holding valid Project Wolframe Commercial licenses may use this file in accordance with the Project Wolframe Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between the licensee and Project Wolframe.

GNU General Public License Usage.  Alternatively, you can redistribute this file and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

Wolframe is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with Wolframe. If not, see http://www.gnu.org/licenses/

If you have questions regarding the use of this file, please contact Project Wolframe.

Aug 29, 2014 version 0.0.3


Table of Contents

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

List of Figures

1.1. Overview
5.1. Overview