The OTRS framework is modular. The following picture shows the basic layer architecture of OTRS.
Introduced in OTRS 3.1, the OTRS Generic Interface continues OTRS modularity. The next picture shows the basic layer architecture of the Generic Interface.
Directory | Description |
---|---|
bin/ | commandline tools |
bin/cgi-bin/ | web handle |
bin/fcgi-bin/ | fast cgi web handle |
Kernel | application codebase |
Kernel/Config/ | configuration files |
Kernel/Config/Files | configuration files |
Kernel/GenericInterface/ | the Generic Interface API |
Kernel/GenericInterface/Invoker/ | invoker modules for Generic Interface |
Kernel/GenericInterface/Mapping/ | mapping modules for Generic Interface, e.g. Simple |
Kernel/GenericInterface/Operation/ | operation modules for Generic Interface |
Kernel/GenericInterface/Transport/ | transport modules for Generic Interface, e.g. "HTTP SOAP" |
Kernel/Language | language translation files |
Kernel/Scheduler/ | Scheduler files |
Kernel/Scheduler/TaskHandler | handler modules for scheduler tasks, e.g. GenericInterface |
Kernel/System/ | core modules, e.g. Log, Ticket... |
Kernel/Modules/ | frontend modules, e.g. QueueView... |
Kernel/Output/HTML/ | html templates |
var/ | variable data |
var/log | logfiles |
var/cron/ | cron files |
var/httpd/htdocs/ | htdocs directory with index.html |
var/httpd/htdocs/skins/Agent/ | available skins for the Agent interface |
var/httpd/htdocs/skins/Customer/ | available skins for the Customer interface |
var/httpd/htdocs/js/ | JavaScript files |
scripts/ | misc files |
scripts/test/ | unit test files |
scripts/test/sample/ | unit test sample data files |
.pl = Perl
.pm = Perl Module
.tt = Template::Toolkit template files
.dist = Default templates of files
.yaml or .yml = YAML files, used for Web Service configuration
Core modules are located under $OTRS_HOME/Kernel/System/*
. This layer is for the
logical work. Core modules are used to handle system routines like "lock ticket" and
"create ticket". A few main core modules are:
Kernel::System::Config
(to access config options)
Kernel::System::Log
(to log into OTRS log backend)
Kernel::System::DB
(to access the database backend)
Kernel::System::Auth
(to check user authentication)
Kernel::System::User
(to manage users)
Kernel::System::Group
(to manage groups)
Kernel::System::Email
(for sending emails)
For more information, see: http://otrs.github.io/doc/
The interface between the browser, web server and the frontend modules. A frontend module can be used via the HTTP-link.
Frontend modules are located under $OTRS_HOME/Kernel/Modules/*.pm
. There are two
public functions in there - new()
and run()
- which are accessed from the Frontend
Handle (e.g. index.pl
).
new()
is used to create a frontend module object. The Frontend Handle provides the
used frontend module with the basic framework objects. These are, for example:
ParamObject
(to get web form params), DBObject
(to use existing database connections),
LayoutObject
(to use templates and other html layout functions), ConfigObject
(to
access config settings), LogObject
(to use the framework log system), UserObject
(to get the user functions from the current user), GroupObject
(to get the group
functions).
For more information on core modules see: http://otrs.github.io/doc/
The CMD (Command) Frontend is like the Web Frontend Handle and the Web Frontend Module
in one (just without the LayoutObject
) and uses the core modules for some actions in
the system.
Generic Interface modules are located under $OTRS_HOME/Kernel/GenericInterface/*
.
Generic Interface modules are used to handle each part of a web service execution on
the system. The main modules for the Generic Interface are:
Kernel::GenericInterface::Transport
(to interact with remote systems)
Kernel::GenericInterface::Mapping
(to transform data into a required format)
Kernel::GenericInterface::Requester
(to use OTRS as a client for the web
service)
Kernel::GenericInterface::Provider
(to use OTRS as a server for web service)
Kernel::GenericInterface::Operation
(to execute Provider actions)
Kernel::GenericInterface::Invoker
(to execute Requester actions)
Kernel::GenericInterface::Debugger
(to track web service communication,
using log entries)
For more information, see: http://otrs.github.io/doc/
Generic Interface Invoker modules are located under
$OTRS_HOME/Kernel/GenericInterface/Invoker/*
. Each Invoker is contained in a folder
called Controller
. This approach helps to define a name space not only for
internal classes and methods but for filenames too. For example:
$OTRS_HOME/Kernel/GenericInterface/Invoker/Test/
is the
Controller for all Test-type invokers.
Generic Interface Invoker modules are used as a backend to create requests for Remote Systems to execute actions.
For more information, see: http://otrs.github.io/doc/
Generic Interface Mapping modules are located under
$OTRS_HOME/Kernel/GenericInterface/Mapping/*
. These modules are used to transform
data (keys and values) from one format to another.
For more information, see: http://otrs.github.io/doc/
Generic Interface Operation modules are located under
$OTRS_HOME/Kernel/GenericInterface/Operation/*
. Each Operation is contained in a
folder called Controller
. This approach help to define a name space not only for
internal classes and methods but for filenames too. For example:
$OTRS_HOME/Kernel/GenericInterface/Operation/Ticket/
is the
Controller for all Ticket-type operations.
Generic Interface operation modules are used as a backend to perform actions requested by a remote system.
For more information, see: http://otrs.github.io/doc/
Generic Interface Network Transport modules are located under
$OTRS_HOME/Kernel/GenericInterface/Operation/*
. Each transport module should be
placed in a directory named as the Network Protocol used. For example: The "HTTP
SOAP" transport module, located in $OTRS_HOME/Kernel/GenericInterface/Transport/HTTP/SOAP.pm
.
Generic Interface transport modules are used send data to, and receive data from a Remote System.
For more information, see: http://otrs.github.io/doc/
Scheduler Task Handler modules are located under
$OTRS_HOME/Kernel/Scheduler/TaskHandler/*
. These modules are used to perform asynchronous
tasks. For example, the GenericInterface
task handler perform Generic Interface Requests to
Remote Systems outside the apache process. This helps the system to be more responsive,
preventing possible performance issues.
For more information, see: http://otrs.github.io/doc/
The database interface supports different databases.
For the OTRS data model please refer to the files in your /doc
directory. Alternatively
you can look at the data model
on github
.