Architecture Overview

The OTOBO framework is modular. The following picture shows the basic layer architecture of OTOBO.

OTOBO Architecture

OTOBO Architecture

The OTOBO Generic Interface continues OTOBO modularity. The next picture shows the basic layer architecture of the Generic Interface.

Generic Interface Architecture

Generic Interface Architecture

Directories

Directory Description
bin/ command line tools
bin/cgi-bin/ web handle
bin/fcgi-bin/ fast CGI web handle
Kernel application code base
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/ front end 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

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

Core modules are located under $OTOBO_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 configuration options.
  • Kernel::System::Log to log into OTOBO log back end.
  • Kernel::System::DB to access the database back end.
  • 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 the Documentation Portal.

Front End Handle

The interface between the browser, web server and the front end modules. A front end module can be used via the HTTP link.

http://localhost/otobo/index.pl?Action=Module

Front End Modules

Front end modules are located under $OTOBO_HOME/Kernel/Modules/*.pm. There are two public functions in there - new() and run() - which are accessed from the front end handle (e.g. index.pl).

new() is used to create a front end module object. The front end handle provides the used front end 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 see the Documentation Portal.

CMD Front End

The CMD (command line) front end is like the web front end handle and the web front end module in one (just without the LayoutObject) and uses the core modules for some actions in the system.

Generic Interface Modules

Generic interface modules are located under $OTOBO_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 OTOBO as a client for the web service.
  • Kernel::GenericInterface::Provider to use OTOBO 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 the Documentation Portal.

Generic Interface Invoker Modules

Generic interface invoker modules are located under $OTOBO_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: $OTOBO_HOME/Kernel/GenericInterface/Invoker/Test/ is the controller for all test type invokers.

Generic interface invoker modules are used as a back end to create requests for remote systems to execute actions.

For more information see the Documentation Portal.

Generic Interface Mapping Modules

Generic interface mapping modules are located under $OTOBO_HOME/Kernel/GenericInterface/Mapping/*. These modules are used to transform data (keys and values) from one format to another.

For more information see the Documentation Portal.

Generic Interface Operation Modules

Generic interface operation modules are located under $OTOBO_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: $OTOBO_HOME/Kernel/GenericInterface/Operation/Ticket/ is the controller for all ticket type operations.

Generic interface operation modules are used as a back end to perform actions requested by a remote system.

For more information see the Documentation Portal.

Generic Interface Transport Modules

Generic interface network transport modules are located under $OTOBO_HOME/Kernel/GenericInterface/Transport/*. Each transport module should be placed in a directory named as the network protocol used. For example: The HTTP SOAP transport module, located in $OTOBO_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 the Documentation Portal.

Scheduler Task Handler Modules

Scheduler task handler modules are located under $OTOBO_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 the Documentation Portal.

Database

The database interface supports different databases.

For the OTOBO data model please refer to the files in your /doc directory. Alternatively you can look at the data model on GitHub.