You are on page 1of 69

Getting Started

New to SpagoBI?
Want to easily install and run SpagoBI?
Then follow these steps:

From SpagoBI 4.2 you have to use the JDK 7

Download the All-in-one package.


This package contains a ready-to-use installation of SpagoBI running on Tomcat, all
engines already configured for you and a simple demo of SpagoBI functionalities.

Unzip and start Tomcat server by executing SpagoBIStartup.bat (Windows) or


SpagoBIStartup.sh (Linux) from the bin folder.

Depending on your CPU you may need to change the catalina.bat script file. In particular
if you have a 32-bit CPU on a Windows machine and you experiment problems in
launching SpagoBI, you might reduce the size of memory allocation parameters for the
JVM. Instead of -Xms2048m -Xmx2048m -XX:MaxPermSize=512m try with
-Xms512m -Xmx512m -XX:MaxPermSize=256m

Open your browser and type http://localhost:8080/SpagoBI

Login as the default user: biadmin/biadmin or bidemo/bidemo

Now you are ready to play with the demo and explore SpagoBI functionalities.

SpagoBI Server Architecture


SpagoBI Server is the main module of the suite. It offers all the core and analytical functionalities.

The Analytical Model is the core of SpagoBI Server and covers the whole range of analytical needs, providing many
solutions for each analytical area:

Reporting, to realize structured reports and export them in several formats

OLAP, allowing the multidimensional analysis on data through flexible and user-friendly OLAP engines

Charts, allowing to develop single ready-to-use graphical and interactive widgets

KPI, to create, manage, view and browse KPI hierarchical models

Interactive cockpits, to aggregate several documents into a single view, fostering their interactive and
intuitive usage

Ad-hoc reporting, to freely create multi-sheet reports through the Worksheet engine

Location Intelligence, for run-time connections between geographic and business data

Free Inquiry (Driven Data Selection), to build queries through entirely graphical tools

Data Mining, to find out hidden information patterns among a great amount of data

Real-time dashboards and console, allowing to produce real-time monitoring consoles

Collaboration, to automatically create organized report dossiers, with comments and notes

Office Automation, for the publication of personal documents in BI environments

ETL, allowing to load data into the data warehouse and manage it

Mobile, based on the common devices interaction touch-screen paradigm, conceived for an efficient off-line
workability

External processes, to manage customized processes, running in the background and/or starting at a
scheduled time

Master Data Management, to take advantage of write-back functionalities on the database

Network analysis, which allows users to visualize and interpret relations among a set of entities.
Based on Open Standards adoption, SpagoBI allows the end-user to compose the most suitable BI platform, also
mixing open source and proprietary products in order to maximize the overall ROI, to save investments already done,
providing quickly the first results with a smooth insertion in pre-existing environments.
The Behavioural Model regulates visibility over documents and data according to the end-users' roles. It allows to:

reduce the required number of analytical documents

code only once the behavioural and visibility rules on data

guarantee the uniform growth of the project over time

guarantee the respect of the visibility rules over time, with no limit on the number of engines and analytical
documents that the user adds.
All the analytical documents are strictly related to the behavioural model. In fact, the behavioural model guides the
behaviour of the analytical documents according to the user's role, managing the visibility of documents and data.
The Administration Tools support developers, testers and administrators in their daily work, providing various
functionalities, such as:

scheduler

roles synchronization

user profile system

import/export

menu management

maps catalogue

management of the documents repository

management of the analytical model

management of the behavioural model

engine configuration

data sources configuration

configuration of Data Sources and engines

audit & monitoring

subscription management

management of business metadata


The Cross Services include the platform common features that can be used on all analytical areas:

SSO

alert and notification

workflow

search engine

collaborative tools

rules engine

sending e-mails

ranking

multiformat exporter

RT events

document browser

personal files

cross navigation

subscriptions

metadata visualization.

The full list of the analytical engines of SpagoBI suite, according to their Module and Analytical
Area, follows.
Area

Engine name

Download software packages

Notes

SpagoBI-bin-_.zip
CasServer-_.zip

The maintenance on the


analytical engines
included in SpagoBI-bin_.zip is applied as detailed
below.

Reporting

SpagoBIJasperReportEngine
SpagoBIBirtReportEngine
SpagoBIAccessibilityEngine
SpagoBIBOEngine

SpagoBIJasperReportEngine-bin-_.zip
SpagoBIBirtReportEngine-bin-_.zip
SpagoBIAccessibilityEngine-bin-_.zip
SpagoBIBOEngine-bin-_.zip

Maintenance on
SpagoBIBOEngine on
demand.

OLAP

SpagoBIJPivotEngine
SpagoBIWhatIfEngine

SpagoBIJPivotEngine-bin-_.zip
SpagoBIWhatIfEngine-bin-_.zip

SpagoBIWhatIfEngine
contains new SpagoBI
OLAP Client

Chart

SpagoBIChartsEngine
SpagoBIHighChartsEngine
SpagoBIJfreeChartsEngine

Core

Interactive
cockpit

KPI

SpagoBIChartEngine-_.zip
Maintenance on
Packages included in SpagoBI-bin-_.zip:
SpagoBIHighCartsEngine
it.eng.spagobi.engines.chart
on demand
- it.eng.spagobi.engines.dashboard
SpagoBIInMemoryEngine-bin_.zip
Package included in SpagoBI-bin-_.zip:
SpagoBIComposedDocumentEngi ne
it.eng.spagobi.engines.documentcompositi
SpagoBICockpitEngine
on
- SpagoBICockpitEngine-bin-_.zip
SpagoBIKPIEngine

Data Mining SpagoBIDataMiningEngine

Package included in SpagoBI-bin-_.zip:


- it.eng.spagobi.engines.kpi
SpagoBIDataMiningEngine-bin-_.zip

Free Inquiry

SpagoBIQbeEngine
SpagoBISmartFilterEngine

SpagoBIQbeEngine-bin-_.zip

Ad-hoc
reporting

SpagoBIWorksheetEngine

SpagoBIQbeEngine-bin-_.zip

Location
Intelligence

SpagoBIGeoEngine
SpagoBIGeoReportEngine

SpagoBIGeoEngine-bin-_.zip
SpagoBIGeoReportEngine-bin-_.zip

Real-time

SpagoBIConsoleEngine
SpagoBIDashboardEngine

SpagoBIConsoleEngine-bin-_.zip
Package included in SpagoBI-bin-_.zip:
- it.eng.spagobi.engines.dashboard

Mobile

SpagoBIMobileReportEngine
SpagoBIMobileChartEngine
SpagoBIMobileCockpitEngine
SpagoBIMobileKPIEngine *

SpagoBIMobile-bin-_.zip

Office

SpagoBIOfficeEngine

Package included in SpagoBI-bin-_.zip:


- it.eng.spagobi.engines.officedocument

Collaboration

SpagoBIAnalyticalDossierEngin Package included in SpagoBI-bin-_.zip:


e
- it.eng.spagobi.engines.dossier

ETL

SpagoBITalendEngine

SpagoBITalendEngine-bin-_.zip

External
process

SpagoBICommonJEngine

SpagoBICommonJEngine-bin-_.zip

Master Data
SpagoBIQbeEngine
Management

SpagoBIQbeEngine-bin-_.zip

Network
Analysis

SpagoBINetworkEngine

SpagoBINetworkEngine-bin-_.zip

SDK

SpagoBISDK

SpagoBISDK-bin-_.zip

SpagoBI Configuration
This section describes the configuration procedure for SpagoBI 3 and later. For older versions,
please check here.

Engines Configuration
o Internal Engines
o External Engines
o Summary of engine configuration options

Data Source Configuration

SpagoBI Configuration
o Logging
o Mail Server
o DBMS Type

Database schema

o Maximum file size


o Date Format
o Language
o Context name

o JNDI name

SpagoBI Installation as a portal application

Engines Configuration
All Engines have a default configuration at startup.
You can manually edit engines configuration via the Engines Management functionality under
the Resources menu in SpagoBI homepage.

In this list you can find one instance of each engine type.
Using the editor you can modify engine configuration as follows:

edit the URL of external engines, in case you installed that engine in a diferent server.

create a duplicate instance of an engine to balance load.

There are 2 types of engines:

Internal: installed within /SpagoBI context

External: installed within a specific context (e.g., /SpagoBIJPivot )

For each type of engine the administrator can set:

label

name

description

document type: predefined list of document types that can be implemented using the
engine

engine type: external or internal

Data Set: if this option is enabled, any analytical document of this type can be associated
to a dataset from the document detail page

Data Source: if this option is enabled, any analytical document of this type can be
associated to a data source from the document detail page

Details about the configuration process for each engine are provided below.

Internal Engines
In this case you only need to set the implementation class.

External Engines
In this case you need to set:

URL: the URL used by browser to call the Engine

Driver: the implementation class of specific driver

Summary of engine configuration options


INTERNAL
Name
Dashboar
d
Chart
Dossier
Office
Document
Documen
t
Compositi
on
Kpi

Dat Data
a Sour
Set ce

Class

it.eng.spagobi.engines.dashboard.SpagoBIDashboardInternalEngine

X
X

it.eng.spagobi.engines.chart.SpagoBIChartInternalEngine
it.eng.spagobi.engines.dossier.SpagoBIDossierInternalEngine
it.eng.spagobi.engines.officedocument.SpagoBIOfficeDocumentInternalE
ngine
it.eng.spagobi.engines.documentcomposition.SpagoBIDocumentComposi
tionInternalEngine

it.eng.spagobi.engines.kpi.SpagoBIKpiInternalEngine

EXTERNAL
Data Data
Driver
Set Source
Birt
X
X
it.eng.spagobi.engines.drivers.birt.BirtReportDriver
Geo
X
it.eng.spagobi.engines.drivers.geo.GeoDriver
JPivot
X
JPalo
X
it.eng.spagobi.engines.drivers.jasperreport.JasperReportDriv
JasperReport
X
X
er
QBE
X
it.eng.spagobi.engines.drivers.qbe.QbeDriver
Talend
it.eng.spagobi.engines.drivers.talend.TalendDriver
Weka
it.eng.spagobi.engines.drivers.weka.WekaDriver
Worksheet Engine
X
it.eng.spagobi.engines.drivers.worksheet.WorksheetDriver
Name

ConsoleEngine

GeoReportEngine X
Accessibility
X
Engine
SmartFilterEngin
e

it.eng.spagobi.engines.drivers.console.ConsoleDriver

/SpagoBIBirtRepo
/SpagoBIGeoEng

/SpagoBIJasperRe

/SpagoBIQbeEng
/SpagoBITalendE
/SpagoBIWekaEn
/SpagoBIQbeEng
/SpagoBIConsole
ACTION_NAME
CONSOLE_ENGI
/SpagoBIGeoRep

it.eng.spagobi.engines.drivers.generic.GenericDriver
it.eng.spagobi.engines.drivers.accessibility.AccessibilityDri
/SpagoBIAccessib
ver
X

it.eng.spagobi.engines.drivers.smartfilter.SmartFilterDriver /SpagoBIQbeEng

Data Source Configuration


SpagoBI administrator must configure every DB connection used in documents under Resource
-> Engines Management.
Once defined, these connections can be used in Analitical Documents.

There are two different options to configure the connection to a DB:

Use JNDI
This is the recommended way, but you must configure JNDI resource in your Application
Server.
For example in Tomcat you have to define Connection Pool in server.xml and add a
resource link in every Context.

Use JDBC
In this case SpagoBI create a new connection for every document execution, remember to
insert JDBC Driver Library in your System.

After that, you can TEST your connection using button {

The result should be:

SpagoBI Configuration
This section describes how to configure different options for SpagoBI.

Logging
Each WebApplication uses Log4J to log debug and error information.
You can adjust the logging verbosity level by editing the following file:
WEB/classes/log4j.properties
There are four possible logging levels:

DEBUG

ERROR

WARN

INFO

Note: for more information about log4j configuration [http://logging.apache.org/log4j/]


Each WebApplication writes its log file under TOMCAT_HOME/logs. This option can be
changed if needed.

SpagoBI uses Spago as J2EE Application Framewor. Spago has a specific logging system that
gets redirected in log4j. Hence, if you want to debug Spago, you will need to change the Spago
Log Level at TOMCAT_HOME/webapps/SpagoBI/WEB-INF/conf/config/tracing.xml
<TRACING>
<LOGGER isDefault="true" name="Spago" class="it.eng.spago.tracing.Log4JLogger">
<CONFIG trace_min_log_severity="0" debug="false" append="true"
trace_thread_name="false" />
</LOGGER>
</TRACING>
Simply set debug="true" and debug for Spago will be enabled.

Mail Server
SpagoBI uses 3 mail profiles

scheduler: used by SpagoBI Scheduler

user: used to send documents by e-mail

kpi_alarm: used to send alarms

These profiles can be configured via Tools -> Manages Configurations:

In order to configure mail profiles, select MAIL in the filter bar and you will be shown the mail
profiles.
Below the parameters that can be configure for each mail profile:
MAIL.PROFILES.scheduler.smtphost="mail.eng.it" v
MAIL.PROFILES.scheduler.smtpport="110"
MAIL.PROFILES.scheduler.from="spagobi@eng.it"
MAIL.PROFILES.scheduler.user=""
MAIL.PROFILES.scheduler.password=""
MAIL.PROFILES.user.smtphost="mail.eng.it"
MAIL.PROFILES.user.smtpport="110"
MAIL.PROFILES.user.from="spagobi@eng.it"
MAIL.PROFILES.user.user=""
MAIL.PROFILES.user.password=""
MAIL.PROFILES.kpi_alarm.smtphost="mail.eng.it"
MAIL.PROFILES.kpi_alarm.smtpport="110"
MAIL.PROFILES.kpi_alarm.from" name="spagobi@eng.it"

MAIL.PROFILES.kpi_alarm.user" name=""
MAIL.PROFILES.kpi_alarm.password=""

DBMS Type
It is compulsory to properly configure the type of DBMS used by SpagoBI. This is done by
editing the hibernate.cfg.xml file and setting the proper Hibernate , as shown below.
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<!-<property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property>
<property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
<property name="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</property>
<property name="hibernate.dialect">org.hibernate.dialect.IngresDialect</property>
<property name="hibernate.dialect">org.hibernate.dialect.HSQLDialect</property>
<property name="hibernate.dialect">org.hibernate.dialect.DB2400Dialect</property>
-->
If you are using the SpagoBIWorkflowEngine, you also need to configure the Hibernate dialect
for JBPM workflow engine. This can be done by editing apache-tomcat6.0.18/webapps/SpagoBI/WEB-INF/classes/jbpm.cfg.xml
As shwon below, this file contains a reference to JBPM hibernate file:
<string name='resource.hibernate.cfg.xml' value='jbpm.hibernate.cfg.xml' />
In case your file reads jbpm.hibernate.cfg.hsql.xml instead of jbpm.hibernate.cfg.xml:
jbpm.hibernate.cfg.hsql.xml is the hibernate file suitable for HSQLDB; if you are not using
HSQLDB change resource.hibernate.cfg.xml property to jbpm.hibernate.cfg.xml, then edit
apache-tomcat-6.0.18/webapps/SpagoBI/WEB-INF/classes/jbpm.hibernate.cfg.xml and
change
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
according to your database server.
Finally, in case you are using SpagoBI Scheduler, you need to configure the Quartz scheduler
engine by editing apache-tomcat-6.0.18/webapps/SpagoBI/WEBINF/classes/quartz.properties.
The file looks similar to what is shown below:
# job store delegate class # Hsqldb delegate class
org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.HSQLDBDelegate

# Mysql/Ingres delegate class


#org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate
# Postgres delegate class
#org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
# Oracle delegate class
#org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.oracle.OracleDelegate
#Simply uncomment the job store delegate class suitable to your database server and comment all
others.

Database schema
SpagoBI metadata repository (DB tables) should reside in the default schema of the user using
the JDBC connection.
In case this is not possible, you should edit hibernate.cfg.xml by adding the following line:
<property name="hibernate.default_schema"><name of the schema></property>
- modify SpagoBI/WEB-INF/classes/jbpm.hibernate.cfg.xml by adding the following line:
<property name="hibernate.default_schema"><name of the schema></property>
- modify SpagoBI/WEB-INF/classes/quartz.properties by adding the following line:
org.quartz.jobStore.tablePrefix=<name of the schema>.qrtz_

- modify the queries inside SpagoBI/WEB-INF/conf/config/statements.xml adding the schema


before tables' names.

Maximum file size


You can set different values via Tools -> Manages Configurations. To set a different maximum
file size, change the following property of GENERIC_CONFIGURATION Category
SPAGOBI.TEMPLATE_MAX_SIZE=5242880

Date Format
It is possible to customize the date format displayed by SpagoBI drivers. The date format
depends in general on the LOCALE options.
You can configure it via Tools -> Manages Configurations by editing the following properties
of the DATE-FORMAT Category

SPAGOBI.DATE-FORMAT-SERVER.format="dd/MM/yyyy"
SPAGOBI.DATE-FORMAT-SERVER.extJsFormat="d/m/Y"
SPAGOBI.DATE-FORMAT.format"dd/MM/yyyy"
SPAGOBI.DATE-FORMAT.extJsFormat="d/m/Y"
SPAGOBI.DATE-FORMAT-IT_IT.format="dd/MM/yyyy"
SPAGOBI.DATE-FORMAT-IT_IT.extJsFormat="d/m/Y"
SPAGOBI.DATE-FORMAT-EN_US.format="MM/dd/yyyy"
SPAGOBI.DATE-FORMAT-EN_US.extJsFormat=valueCheck="m/d/Y"
SPAGOBI.DATE-FORMAT-FR_FR.format="dd/MM/yyyy"
SPAGOBI.DATE-FORMAT-FR_FR.extJsFormat="d/m/Y"
SPAGOBI.DATE-FORMAT-ES_ES.format="dd/MM/yyyy"
SPAGOBI.DATE-FORMAT-ES_ES.extJsFormat="d/m/Y"
SPAGOBI.TIMESTAMP-FORMAT.format="dd/MM/yyyy hh:mm:ss"
SPAGOBI.TIMESTAMP-FORMAT.extJsFormat="d/m/Y H:i:s"
Note that these formats only affect formats of dates shown in documents parameter selection.
The format of dates actually passed to SpagoBI reports (as parameters values) do not depend on
the LOCALE.

Language
SpagoBI supports Java standard i18n. Each user can choose the preferred language. The default
language is read from the browser.
You can set different language supported via Tools -> Manages Configurations by changing the
following properties of the LANGUAGE_SUPPORTED Category
SPAGOBI.LANGUAGE_SUPPORTED.LANGUAGES="[it,IT],[en,US],[fr,FR],[es,ES]"
SPAGOBI.LANGUAGE_SUPPORTED.LANGUAGE.default="en,US"

Context name
You can change the context name via Tools -> Manages Configurations by changing this
property of GENERIC_CONFIGURATION Category
SPAGOBI.SPAGOBI_CONTEXT=/SpagoBI

JNDI name
You can change the JNDI names used to lookup environment variables via Tools -> Manages
Configurations by changing the following properties of the GENERIC_CONFIGURATION
Category

SPAGOBI.SPAGOBI_HOST_JNDI=java://comp/env/spagobi_host_url
SPAGOBI.RESOURCE_PATH_JNDI_NAME=java://comp/env/spagobi_resource_path
SPAGOBI_SSO.INTEGRATION_CLASS_JNDI=java://comp/env/spagobi_sso_class
Note that these properties are valid only within SpagoBI core project.
In addition, each External Engine has engine-config.xml where you can change some JNDI
names such as:
<INTEGRATION_CLASS_JNDI>java://comp/env/spagobi_sso_class</INTEGRATION_CL
ASS_JNDI>
<SPAGOBI_SERVER_URL_JNDI_NAME>java://comp/env/spagobi_service_url</SPAGOB
I_SERVER_URL_JNDI_NAME>
<RESOURCE_PATH_JNDI_NAME>java://comp/env/spagobi_resource_path</RESOURCE
_PATH_JNDI_NAME>
We recommend to chane these names only in case you have trouble with your Application Server

SpagoBI Installation as a portal application


You can install SpagoBI as simple WebApplication or in Portal Environment via Tools ->
Manages Configurations by changing the SPAGOBI.SPAGOBI-MODE property of
theGENERIC_CONFIGURATION Category
SPAGOBI.SPAGOBI-MODE.mode="WEB or "PORTLET"
SpagoBI 2.0 is distributed as Web Application by default.
In case you wish to install as a portal, you will need to:

Modify SPAGOBI.SPAGOBI-MODE.mode

Modify security connector ( read next paragraph )

Comment inizializer in TOMCAT_HOME/webapp/SpagoBI/WEBINF/conf/config/initializer.xml

<! Start Initializer to enable when running in web mode >


<INITIALIZER class="it.eng.spagobi.security.init.SecurityInitializer" config="" />
<INITIALIZER class="it.eng.spagobi.init.TreeInitializer"
config="SPAGOBI.TREE_INITIALIZATION" />
<! End Initializer to enable when running in web mode >

Uncomment listner in TOMCAT_HOME/webapp/SpagoBI/WEB-INF/web.xml


eXo platform uses this listener. If you are using another portal you will need to insert

other specific configurations.


You may have problems with classloader and missing libraries, depending on the portal.

User Management
This section describes user management in SpagoBI 3 or later. Earlier versions only store role
information for the purpose of setting up the behavioral model.

1 Role-based access
o 1.1 Role Management GUI

2 Connectors
o 2.1 ISecurityInfoProvider
o 2.2 ISecurityServiceSupplier

3 Configuration of connectors

4 Implementation of new connectors


o 4.1 Internal Connector (default )
o 4.2 LDAP based
o 4.3 eXo
o 4.4 Role based access rights

5 Change User Password


o 5.1 Password checking rules

6 Public user

1 Role-based access
SpagoBI behavioral model is based on users, roles and attributes. Users are assigned roles. Each
role has a TYPE, which determines the type of permissions associated to each user with that role.
Role types are:

ADMIN: SpagoBI administrator

MODEL_ADMIN: Behavioural model administrator

DEV_ROLE: developer

TEST_ROLE: tester

USER: the final user

Whenever a new role is created or imported, the Role-Type-Patterns is useful to associate the
default type to the new role.
At login, SpagoBI retrieves all permissions (functionalities) associated to the role of the current
user and uses this information during the session to check whether the user is allowed to perform
an action.

1.1 Role Management GUI


The administrator is allowed to manage users and roles via a graphical user interface, accessible
via Profile Management -> Roles management In particular, the following operations are
available:

Start the synchronization of roles

Change the Role Type

Assign some features to display

2 Connectors
Starting SpagoBI 3.x the administrator is allowed to directly manage users from within the
DBMS by means of an InternalConnector. To retrieve infomation about users SpagoBI relies on
two connectors that allow to read:

Role and Attributes name.

User Profile of the current session.

2.1 ISecurityInfoProvider
This interface retrieves all defined roles and user attributes.

public interface ISecurityInfoProvider {


public List getRoles();
public List getAllProfileAttributesNames ();
}

SpagoBI invokes these methods to retrieve the user roles and attributes from the external system.
Roles name and description are inserted in the SBI_EXT_ROLES table. User attributes are
displayed when the administrator displays the attributes list. Note that all defined roles are
handled by SpagoBI, not only the roles defined for a specific user. Roles can be filtered with a
regular expression stored in SPAGOBI.SECURITY.ROLE-NAME-PATTERN-FILTER
property configuration ( you can change this setting via Tools->Manage Configuration).

2.2 ISecurityServiceSupplier
SpagoBI invokes these methods at user login to retrieve roles and attributes associated to the
current user. Note that the checkAuthentication and checkAuthenticationWithToken methods are
used if SSO is disabled.

public interface ISecurityServiceSupplier {


SpagoBIUserProfile createUserProfile(String userId);
SpagoBIUserProfile checkAuthentication(String userId,String psw);
SpagoBIUserProfile checkAuthenticationWithToken(String userId,String
token);
}

3 Configuration of connectors
You can set up the above connectors by changing some properties (via Tools->Manage
Configuration). For example:

SPAGOBI.SECURITY.PORTAL-SECURITYCLASS.className=it.eng.spagobi.security.InternalSecurityInfoProviderImpl

SPAGOBI.SECURITY.USER-PROFILE-FACTORYCLASS.className=it.eng.spagobi.security.InternalSecurityServiceSupplierImpl

SPAGOBI.SECURITY.PORTAL-SECURITY-INITCLASS.className=it.eng.spagobi.security.init.InternalSecurityInitializer

You can also configure the default mapping used to assign the default type to imported roles.

SPAGOBI.SECURITY.ROLE-TYPE-PATTERNS.DEV_ROLE-PATTERN=/spagobi/dev

SPAGOBI.SECURITY.ROLE-TYPE-PATTERNS.TEST_ROLEPATTERN=/spagobi/test

SPAGOBI.SECURITY.ROLE-TYPE-PATTERNS.MODEL_ADMINPATTERN=/spagobi/modeladmin

SPAGOBI.SECURITY.ROLE-TYPE-PATTERNS.ADMIN-PATTERN=/spagobi/dev

4 Implementation of new connectors


If you have to write a new connector you must implement the previous Java Interface, create a
JAR with implementation class ad configure these properties:

SPAGOBI.SECURITY.PORTAL-SECURITYCLASS.className=it.eng.spagobi.security.InternalSecurityInfoProviderImpl

SPAGOBI.SECURITY.USER-PROFILE-FACTORYCLASS.className=it.eng.spagobi.security.InternalSecurityServiceSupplierImpl

SPAGOBI.SECURITY.PORTAL-SECURITY-INITCLASS.className=it.eng.spagobi.security.init.InternalSecurityInitializer

SpagoBI includes these connectors:

4.1 Internal Connector (default )


If you want to use internal user (defined in SpagoBI metadata db):

SPAGOBI.SECURITY.PORTAL-SECURITYCLASS.className=it.eng.spagobi.security.InternalSecurityInfoProviderImpl

SPAGOBI.SECURITY.USER-PROFILE-FACTORYCLASS.className=it.eng.spagobi.security.InternalSecurityServiceSupplierImpl

SPAGOBI.SECURITY.PORTAL-SECURITY-INITCLASS.className=it.eng.spagobi.security.init.InternalSecurityInitializer

4.2 LDAP based


If you want to use LDAP :

SPAGOBI.SECURITY.PORTAL-SECURITYCLASS.className=it.eng.spagobi.security.LdapSecurityProviderImpl

SPAGOBI.SECURITY.USER-PROFILE-FACTORYCLASS.className=it.eng.spagobi.security.LdapUserProfileFactoryImpl

SPAGOBI.SECURITY.PORTAL-SECURITY-INITCLASS.className=it.eng.spagobi.security.init.LdapSecurityProviderInit

This connector uses ldap.jar library and ldap_authorizations.xml to configure connection and
some specific parameters. You MUST set up how connector retrive informations in LDAP in
ldap_authorizations.xml:
<?xml version="1.0" encoding="ISO-8859-1"?>
<LDAP&#95;AUTHORIZATIONS default="FALSE">
<CONFIG>
<USER&#95;DN>cn=&#42;,ou=People,dc=spagobi,dc=com</USER&#95;DN>
<ADMIN&#95;USER>cn=Manager,dc=spagobi,dc=com</ADMIN&#95;USER>
<ADMIN&#95;PSWddbcdd70d086e75bdc121b16bd23f03</ADMIN&#95;PSW>
<ATTRIBUTES&#95;ID name="nome">description</ATTRIBUTES&#95;ID>
<ATTRIBUTES&#95;ID name="cognome">sn</ATTRIBUTES&#95;ID>
<ATTRIBUTES&#95;ID name="userId">cn</ATTRIBUTES&#95;ID>
<HOST>localhost</HOST>
<PORT</PORT>
<OBJECTCLASS>person</OBJECTCLASS>
<SEARCH&#95;ROOT>ou=People,dc=spagobi,dc=com</SEARCH&#95;ROOT>
<OU&#95;ATTRIBUTE>ou</OU&#95;ATTRIBUTE>

<SEARCH&#95;ROOT&#95;GROUP>ou=Group,dc=spagobi,dc=com</SEARCH&#95;ROOT&#95;GRO
UP>
<OBJECTCLASS&#95;GROUP>organizationalUnit</OBJECTCLASS&#95;GROUP>
<ATTRIBUTES&#95;ID&#95;GROUP>description</ATTRIBUTES&#95;ID&#95;GROUP>
<ATTRIBUTES&#95;ID&#95;GROUP>OU</ATTRIBUTES&#95;ID&#95;GROUP>
</CONFIG>
</LDAP&#95;AUTHORIZATIONS>

By default this connector expects spagobi.ldif schema If you have your LDAP schema check the
ldap_authorizations.xml and configure this. The ADMIN_PSW value must be encrypted: in
order to do this, open a DOS/UNIX sheel and type

cd <your Tomcat home>/webapps/SpagoBI/WEB-INF/lib

and then

java -cp commons-codec-1.3.jar;spago-core-2.2.0.jar


it.eng.spago.security.DefaultCipher encrypt <your password>

on Windows systems and

java -cp commons-codec-1.3.jar:spago-core-2.2.0.jar


it.eng.spago.security.DefaultCipher encrypt <your password>

on UNIX/Linux systems.
For examles:"secret" == 6ddbcdd70d086e75bdc121b16bd23f03.
Note: check if the sbi.security.ldap-2.1.0.jar is present in /SpagoBI/WEB-INF/lib

4.3 eXo
If you install SpagoBI in eXo you must configure :

SPAGOBI.SECURITY.PORTAL-SECURITYCLASS.className=it.eng.spagobi.security.ExoSecurityProviderImpl

SPAGOBI.SECURITY.USER-PROFILE-FACTORYCLASS.className=it.eng.spagobi.security.ExoUserProfileImpl

SPAGOBI.SECURITY.PORTAL-SECURITY-INITCLASS.className=it.eng.spagobi.security.init.ExoPortalSecurityProviderInit

Note: check if the sbi.security.exo-...jar* is present in /SpagoBI/WEB-INF/lib

4.4 Role based access rights

5 Change User Password


It is possible change the user password (using CAS environment too). It's useful when you use
the Internal Connector of SpagoBI.
Then, you should view a new link in login page :

When you click on this link a change password page is opened:

SpagoBI provides several rules that can be enforced to check password compliance. For
example, it is possible to check if a password has a minimum length or contains special
characters.
SpagoBI stores these rules in a dedicated table (SBI_CONFIG), where all . Note that the
administrator does not control the enforcement of such rules.

5.1 Password checking rules


Below you can find all available rules for password checking:

len_min: defines a minimum lenght; it can be useful to check the minimum length of the
password when the user change it.

special_char: defines a set of special chars. If it's active the system check that almost one
of them is presents in the new password.

upper_char: checks that at least one character must been in upper case.

lower_char: check that at least one character must been in lower case.

number: defines that at least one character must been a number.

alphabetical: defines that at least one character must been a letter.

change_first: when this role is active the system forces a change password at the first
login.

disactivation_time: defines a number of months after which the password become disbled
(for unused).

expired_time: defines a number of days after whitch the change password is necessary.

If you desire to apply some of this roles you should setting the relative ACTIVE value to true (1)
in SBI_CONFIG table (apart from individual configurations).

6 Public user

Single Sign On with SpagoBI

1 How Enable SSO

2 How to configure SSO using CAS


o 2.1 CAS 2
o 2.2 CAS 3

3 Configure HTTPS
o 3.1 Certification creation
o 3.2 Export the certificate
o 3.3 Copy certificate under Tomcat
o 3.4 Import the certificate in the cacerts
o 3.5 Configure Tomcat

4 Change Password module

Why SSO ?

To ensure the safety of SpagoBI

To simplify the integration with other systems

It is not compulsory but recommended for the production environment, in order to avoid serious
security problems such as:

sending the user_id to the server via URL.

executing reports without rights.

Using SSO Authentication ensures that the user is authenticated in all web applications and
cannot access an engine without being authenticated. It is possible to customize a login module
Form.

1 How Enable SSO


To activate SSO in SpagoBI you have to change the SPAGOBI_SSO.ACTIVE property ( TRUE/
FALSE ).

You can configure SpagoBI to work with any type of SSO, using one single extension point :
spagobi_sso_class. this class has the responsibility to retrieve user information from the SSO
system, so if you have to use SpagoBI with any type of SSO System you have to write a specific
spagobi_sso_class.

2 How to configure SSO using CAS


You can activate SSO following these steps, we explay how set up SSO using CAS
http://www.jasig.org/cas. SpagoBI can works with version 2 and 3 of the CAS. Now we explain
the difference in the configuration for each versions.

2.1 CAS 2
1. Set UP SSL in your server (tomcat documentations)
2. Install CAS Server and configure it (CAS documentations)
3. Activate the use of SSO in SpagoBI
Set UP SSL It's required for these reasons:
1. Without SSL the system is not secure.
2. The ticket generated by cas is encrypted.
You have to read the documentation of how you can configure the application server in SSL. The
SSL is a requirement for CAS system if you adopt other SSO System the SSL is not necessarily
required.
Install CAS Server You can download cas server from SpagoBI download area or from
http://www.jasig.org/cas The CAS server is a Web Application, you have to configure how CAS
verifies the user credentials. You have to change genericHandler.xml OR write your own
Handler.
Activate the use of SSO in SpagoBI Change the SPAGOBI_SSO.ACTIVE property
to TRUE
Change the url in these properties CAS_SSO.VALIDATE-USER.URL CAS_SSO.VALIDATEUSER.SERVICE
Change the spagobi_sso_class environment variable with :
it.eng.spagobi.services.cas.CasSsoService Activate Filter in all WEB.XML like this:
<filter>
<filter-name>CAS_Filter</filter-name>

<filter-class>edu.yale.its.tp.cas.client.filter.CASFilter</filter-class>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.loginUrl</param-name>
<param-value>https://localhost:8443/exo-cas-2/login</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>
<param-value>https://localhost:8443/exo-cas-2/serviceValidate</paramvalue>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>
<param-value>localhost:8443</param-value>
</init-param>
<init-param>
<paramname>edu.yale.its.tp.cas.client.filter.proxyCallbackUrl</param-name>
<param-value>https://localhost:8443/SpagoBI/proxyReceptor</paramvalue>
</init-param>
</filter>
...
<filter-mapping>
<filter-name>CAS_Filter</filter-name>
<url-pattern>/servlet/*</url-pattern>
</filter-mapping>
....

And check ProxyTicketReceptor Servlet:


<servlet>
<servlet-name>ProxyTicketReceptor</servlet-name>
<servletclass>edu.yale.its.tp.cas.proxy.ProxyTicketReceptor</servlet-class>
<init-param>
<param-name>edu.yale.its.tp.cas.proxyUrl</param-name>
<param-value>https://localhost:8443/exo-cas2/proxy</param-value>
</init-param>
</servlet>
...
<servlet-mapping>
<servlet-name>ProxyTicketReceptor</servlet-name>
<url-pattern>/proxyReceptor</url-pattern>
</servlet-mapping>
...

Remember to set the right Address

In the configuration properties

Web.xml of alla Web Applications

Server.xml

Remember to check the right filter receipt for the external engines:

engine-config.xml

<FILTER_RECEIPT>/proxyReceptor</FILTER_RECEIPT>

2.2 CAS 3
1. Set UP SSL in your server (tomcat documentations)
2. Install CAS Server and configure it (CAS documentations)
3. Activate the use of SSO in SpagoBI
Set UP SSL It's required for these reasons:
1. Without SSL the system is not secure.
2. The ticket generated by cas is encrypted.
You have to read the documentation of how you can configure the application server in SSL. The
SSL is a requirement for CAS system if you adopt other SSO System the SSL is not necessarily
required.
Install CAS Server You can download cas server from SpagoBI download area or from
http://www.jasig.org/cas The CAS server is a Web Application, you have to configure how CAS
verifies the user credentials. You have to change genericHandler.xml OR write your own
Handler. The SpagoBI version is able to checks the user credential using the metadata SpagoBI
tables (since 2.5 version). It means that there is yet a personalization about the handler. You can
check the active handler reading the casWEB-INFdeployerConfigContext.xml file (tag ).
Activate the use of SSO in SpagoBI
Change the SPAGOBI_SSO.ACTIVE property
to TRUE

Change the url in these properties CAS_SSO.VALIDATE-USER.URL CAS_SSO.VALIDATEUSER.SERVICE


Change the spagobi_sso_class environment variable with :
it.eng.spagobi.services.cas.CasSsoService3 Activate Filter in all WEB.XML like this:
<filter>
<filter-name>CAS Authentication Filter</filter-name>
<filterclass>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
<init-param>
<param-name>casServerLoginUrl</param-name>
<param-value>https://localhost:8443/cas/login</param-value>
</init-param>
<init-param>
<param-name>serverName</param-name>
<param-value>localhost:8443</param-value>
</init-param>
</filter>
<filter>
<filter-name>CAS Validation Filter</filter-name>
<filterclass>org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilte
r</filter-class>
<init-param>
<param-name>casServerUrlPrefix</param-name>
<param-value>https://localhost:8443/cas/</param-value>
</init-param>
<init-param>
<param-name>serverName</param-name>
<param-value>https://localhost:8443</param-value>
</init-param>
<init-param>
<param-name>proxyReceptorUrl</param-name>
<param-value>/proxyCallback</param-value>
</init-param>
<!-- only for each external engine : -->
<init-param>
<param-name>proxyCallbackUrl</param-name>
<paramvalue>https://localhost:8443/<SpagoBIXXXEngine>/proxyCallback</param-value>
</init-param>
</filter>
<filter>
<filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
<filterclass>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class>
</filter>
...

<filter-mapping>
<filter-name>CAS Authentication Filter</filter-name>
<url-pattern>/servlet/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CAS Validation Filter</filter-name>
<url-pattern>/servlet/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
<url-pattern>/servlet/*</url-pattern>
</filter-mapping>
<!-- only for each external engine : -->
<filter-mapping>
<filter-name>CAS Validation Filter</filter-name>
<url-pattern>/proxyCallback</url-pattern>
</filter-mapping>
....

Remember to set the right Address

In the configuration properties

Web.xml of alla Web Applications

Server.xml

Remember to check the right filter receipt for the external engines:

engine-config.xml

<FILTER_RECEIPT>/proxyCallback</FILTER_RECEIPT>

3 Configure HTTPS
The detail documentation on how to configure HTTPS in tomcat v6 is available [here]. Hereafter
the configuration procedure is streamlined step by step.

3.1 Certification creation


Execute the following command to generate a new certificate:
%JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA -validity 3650

The tool asks some information to the user. Insert the logical name of your server as
nama/surname property (ex. localhost).
Here is an example:
Immettere la password del keystore:
Immettere nuovamente la nuova password:
Specificare nome e cognome
[Unknown]: localhost
Specificare il nome dell'unit aziendale
[Unknown]: DCI
Specificare il nome dell'azienda
[Unknown]: ENG
Specificare la localit
[Unknown]: Milano
Specificare la provincia
[Unknown]: MI
Specificare il codice a due lettere del paese in cui si trova
[Unknown]: IT
Il dato CN=localhost, OU=DCI, O=ENG, L=Milano, ST=MI, C=IT
[no]: si
Immettere la password della chiave per <tomcat>
(INVIO se corrisponde alla password del keystore):

This operation generates a new certificate in file .keystore in the user home directory. If you
recieve the following error when insert the password property...
keytool error: java.io.IOException: Keystore was tampered with, or password
was incorrect

probably you have already a .keystore file in your user home. In that case you must provide the
password you have inserted when you have defined it. If you have never created it but the file is
there try changeit as password. If it does not work delete the existing .keystore file and reacreate
it from scratch.

3.2 Export the certificate


%JAVA_HOME%\bin\keytool -export -alias tomcat -file tomcat.crt

Insert the password that you have specified when you have created the store (see previous step)
and press enter. The certificate will be exported in tomcat.crt file.

3.3 Copy certificate under Tomcat


Copy the file .keystore in the conf/ directory of tomcat.

3.4 Import the certificate in the cacerts


To import the certificate in the cacerts of the JDK using KeyTools:

%JAVA_HOME%\bin\keytool -import -trustcacerts -alias tomcat -file tomcat.crt


-keystore C:\Programmi\Java\jdk1.5.0_11\jre\lib\security\cacerts
C:\temp>%JAVA_HOME%\bin\keytool -import -trustcacerts -alias jbftomcat -file
cert.crt -keystore C:\Programmi\Java\jdk1.5.0_11\jre\lib\security\cacerts
Immettere la password del keystore: changeit
Proprietario: CN=zerbetto.engilab.ewebpd.eng.it, OU=DCI, O=ENG, L=PD, ST=PD,
C=IT
Organismo di emissione: CN=server.engilab.ewebpd.eng.it, OU=DCI, O=ENG,
L=PD,ST=PD, C=IT
Numero di serie: 493ea04f
Valido da Tue Dec 09 17:43:59 CET 2008 a Fri Dec 07 17:43:59 CET 2018
Impronte digitali certificato:
MD5: F4:93:FD:9E:8A:39:3F:10:47:1B:11:2E:D1:9B:E0:22
SHA1:
C9:D9:26:7B:E9:57:79:45:34:66:3A:9D:86:F8:8E:4D:98:0C:E0:46
Considerare attendibile questo certificato? [no]: si
Il certificato stato aggiunto al keystore

It is possible to use some environment variable to set up truststore:


CAS_OPTS="-Djavax.net.ssl.trustStore=$CATALINA_HOME/conf/.keystore
-Djavax.net.ssl.trustStorePassword=mypassword"

3.5 Configure Tomcat


You must acrivate HTTPS connector under Tomcat, edit server.xml file and uncomment this:
<Connector acceptCount="100" maxHttpHeaderSize="8192" clientAuth="false"
debug="0"
disableUploadTimeout="true" enableLookups="false" SSLEnabled="true"
keystoreFile="conf/.keystore" keystorePass="mypassword" maxSpareThreads="75"
maxThreads="150" minSpareThreads="25" port="8443" scheme="https" secure="true"
sslProtocol="TLS"/>

Note: keystoreFile="conf/.keystore"

4 Change Password module


From 2.5 SpagoBI version is possible change the user password using CAS environment. It's
useful when you use the Internal Connector of SpagoBI.
To do this, you should install the new version of CAS webapp and change, like ever, all url, in
particular pay attention to modify the url in file /webapps/cas/WEB-INF/login-webflow.xml for
set the correct link for the external redirect (SpagoBI's change password module). Ie:
<end-state id="changepwd"
view="externalRedirect:*https://localhost:8443/SpagoBI/ChangePwdServlet*?
start_url=..." />

Then, if all is correct you should view a new link in login page :

For more informations about the roles available on this module look at
https://wiki.spagobi.org/xwiki/bin/view/spagobi_server/User+management (chapter "Change
Password module" )
Engines Installation & Configuration
Detailed explanation on how to install and configure specific engines:

HighCharts installation
JPalo installation
Weka installation

HighCharts installation
In this page we will describe how install HighCharts libreries into SpagoBI Core and QBE
Engine

SpagoBI

Download the version 2.1.6 of the library Hightcharts from the official web site
(http://www.highcharts.com/downloads/zips/Highcharts-2.1.6.zip) or from our public SVN
http://websvn.ow2.org/listing.php?repname=spagobi&path=%2FV_3.x%2FServer%2Ftrunk
%2FSpagoBIProject%2Fweb-content%2Fjs%2Flib%2Fhighcharts-2.1.6%2F
If you have downloaded the zip from the official Hightcharts web site open you installation of
SpagoBI and perform these steps:

Open the home folder of your SpagoBI installation.

Open the folder where youve deployed the SpagoBI war (for tomcat webapps).

Open the folder SpagoBI/js/lib

Create a folder SpagoBI/js/lib/highcharts-2.1.6

Copy the content of the folder Highcharts-2.1.6.zip/js/ of the downloaded zip file into the
folder SpagoBI/js/lib/highcharts-2.1.6

If you have downloaded folder highcharts-2.1.6 from our SVN act in this way:

Open the home folder of your SpagoBI installation.

Open the folder where youve deployed the SpagoBI war (for tomcat /webapps).

Open the folder SpagoBI/js/lib

Create a folder SpagoBI/js/lib/highcharts-2.1.6

Copy the content of the SVN folder highcharts-2.1.6 into the folder
SpagoBI/js/lib/highcharts-2.1.

SpagoBIQbeEngine
Download the version 2.1.4 of the library Hightcharts from the official web site
(http://www.highcharts.com/downloads/zips/Highcharts-2.1.4.zip) or from our public SVN at
this link http://websvn.ow2.org/listing.php?repname=spagobi&path=%2FV_3.x%2FServer
%2Ftrunk%2FSpagoBIQbeEngine%2FWebContent%2Fjs%2Flib%2Fhighcharts-2.1.4%2F
If you have downloaded the zip from the official Hightcharts web site open you installation of
SpagoBI and perform these steps:

Open the home folder of your SpagoBI installation.

Open the folder where youve deployed the SpagoBIQbeEngine war (for tomcat
webapps).

Open the folder SpagoBIQbeEngine/js/lib

Create a folder SpagoBIQbeEngine/js/lib/highcharts-2.1.4

Copy the content of the folder Highcharts-2.1.4.zip/js/ of the downloaded zip file into the
folder

SpagoBI/js/lib/highcharts-2.1.4
If you have downloaded folder highcharts-2.1.4 from our SVN act in this way:

Open the home folder of your SpagoBI installation.

Open the folder where youve deployed the SpagoBIQbeEngine war (for tomcat
webapps).

Open the folder SpagoBIQbeEngine/js/lib

Create a folder SpagoBIQbeEngine/js/lib/highcharts-2.1.4

Copy the content of the SVN folder highcharts-2.1.4 into folder


SpagoBIQbeEngine/js/lib/highcharts-2.1.4

To configure the library you want to use in the worksheet for the chart rendering, you should
change the file SpagoBI-Server3.5xxx/webapps/SpagoBIQbeEngine/js/spagobi/commons/Settings.js So open the file and act in
the line 119, more or less, of this file.
If the value of this line is
,chartlib : 'ext3'

the worksheet engine will use the extJS library; If the value is
,chartlib : 'highcharts'

it will use the highcharts JS library. If you change this file you dont have to restart the server,
but you should clean the cache of your browser and refresh the web page.

JPalo Installation

1 Install SpagoBI JPalo Engine

1 Install SpagoBI JPalo Engine

To install SpagoBI JPalo Engine, download the war file from SpagoBI OW2 website at the
following URL:
http://forge.ow2.org/project/showfiles.php?group_id=204
Simply choose the SpagoBIJPaloEngine 3.x - Binary zip file and download it. Unzip it under
your application server webapp folder
(web application deployment folder).
Startup the server so that the web application is exploded. Once you removed the .war file, you
can configure JPalo just like described
in the following wiki page: http://wiki.spagobi.org/xwiki/bin/view/spagobi_server/JPalo
Remember to configure JPaloEngine from SpagoBI GUI Resources/Engine Management:

SpagoBI Weka Engine

1 Install SpagoBI Weka Engine

1 Install SpagoBI Weka Engine


To install SpagoBI Weka Engine, download the war file from SpagoBI OW2 website at the
following URL:
http://forge.ow2.org/project/showfiles.php?group_id=204
Simply choose the SpagoBIWekaEngine 3.x - Binary zip file and download it. Unzip it under
your application server webapp folder
(web application deployment folder).

Startup the server so that the web application is exploded. Once you removed the .war file, you
can configure Weka changing the sql dialect
in /SpagoBIWekaEngine/WEB-INF/classes/database.properties in file.
Remember to configure WekaEngine from SpagoBI GUI Resources/Engine Management:

Internationalization
1.
1. How to use Localization in Data Set and LOV
2. Jasper Engine specific issues
3. Birt Engine specific issues
4. JPivot Engine specific issues
5. Domains value
6. How to localize titles, messages and labels
7. I18n of User Menu
8. Automatic label translation

When using SpagoBI in web-mode configuration it is possible to dinamically select the language
by using the selection box in the up-right corner of the page. This way any user can change the
language of all labels that have been localized.
Languages supported by the system are registered in the spagobi.xml file under the
<language_supported> tag.
<LANGUAGE_SUPPORTED>
<LANGUAGE default="false" language="it" country="IT" />
<LANGUAGE default="true" language="en" country="US" />
<LANGUAGE default="false" language="fr" country="FR" />
</LANGUAGE_SUPPORTED>
A user registering a new language must also add the corresponding .properties file, by adopting
the following suntax for the file name: messages_{language}_{country}.properties (e.g.
messages_fr_FR.properties for a french translation); this file should be filles with all pair of
codes and their correct translation, in the form code=translation (e.g.
cod_ProductAnalysis=Analyse de produits for French or cod_ProductAnalysis=Product Analysis
for English).

How to use Localization in Data Set and LOV


A profile attribute named language is put in session when a user logs in, taking the value of the
default language (see spagobi.xml); the value of this session attribute is changed when the user
selects a different lanaguage. In any dataset and LOV query it is possible to acces this profile
attribute with the syntax ${language} .
As an example, if you have a tabel with this schema:
DROP TABLE IF EXISTS test_language;
CREATE TABLE test_language (
`id` int(10) unsigned NOT NULL auto_increment,
`lang` varchar(45) NOT NULL,
`name` varchar(45) NOT NULL,
`descr` varchar(45) NOT NULL,
PRIMARY KEY (`id`)
);
With this table of data:
Id
1
2

lang
it
en

name
Mario
John

descr
Mario Rossi
Wayne

If you create a Data Set with this query:


select name,descr from test_language where lang='${language}'
The result of Data Set depends on the user selected language.
You can do the same with LOV.

Jasper Engine specific issues


While writing the template you need to write a field in the form $R{message_code}
where message_code is the code of the text you want to be localized.
(Pay attention that you must write $R{message_code} in a dynamic text field, it will not work if
you write it in a static text field).
message_code must be placed then in the properties file with the syntax message_code =
internationalised_message,
for example:
title_code = title of the document
The name of the properties file is "messages_" plus the current locale; for example:
- messages_en_US for english USA language
- messages_it_IT for italian language
- messages_fr_FR for french language
(For release after 2.2)
All properties files have to be put either in the resources folder under the folder jasper_messages,
or in a zip file with the jrxml template and then uploaded as template of the Jasper Document.

Birt Engine specific issues


For what concern Birt, when user wants to localize a message in a field in report template, he
needs to define the code filling the Text key field by clicking on the Localization voice under the
field properties tab.

Select then the report and set the resource file bundle name in the resources tab of the Property
Editor; the default message bundle is "messages".

message_code must be placed then in the properties file with the syntax message_code =
internationalised_message,
for example:
title_code = title of the document
The name of the properties file is "messages_" plus the current locale; for example:
- messages_en_US for english USA language
- messages_it_IT for italian language
- messages_fr_FR for french language
(For release after 2.2)
All properties files have to be put either in the resources folder under the folder birt_messages, or
in a zip file with the rptdesign template and then uploaded as template of the Birt Document.

JPivot Engine specific issues


Domains value
Contents in sbi_domains table has been localized too; this way system translates the domain
name if is found in the properties file of the current language, otherwise write the name itself,
due to back-compatibility.

How to localize titles, messages and labels


In order to localize SpagoBI in a specific language, you have to follow the below-reported
instructions (by way of an example, here we suppose you wish to localize SpagoBI in Polish).
1) Configure the new language

Log into SpagoBI as Administrator

Go to Tools - Manage Configurations

In the Select Category combo box, select "LANGUAGE_SUPPORTED"

Add the language at the end of the existing string as follows: ,[pl,PL]

Add the icon of the related flag into the file:


SpagoBI\themes\sbi_default\css\analiticalmodel\execution\main.css , by adding the
following lines:

.icon-pl {
background-

url('../../../img/pl_PL.gif') !important;

The image containing the new flag shall be added into the folder
SpagoBI\themes\sbi_default\img .

2) Translate the titles, messages and labels


At this point, translate all the titles, messages and labels included in SpagoBI packages:

SpagoBI\WEB-INF\classes\MessageFiles\

SpagoBI\js\src\ext\sbi\locale

SpagoBIQbeEngine\js\spagobi\locale\....

SpagoBIGeoReportEngine\js\src\ext\sbi\locale

SpagoBIConsoleEngine\js\spagobi\locale

All .properties files must be copied and renamed as xxxxxx_pl_PL.properties, before making any
changes inside.

I18n of User Menu


In order to localize menu items for the User Menu toolbar in a specific language, you have to
follow the below-reported instructions.
First of all enter the new Menu item from the SpagoBI administrator Tools/Menu configuration
toolbar.
The name of the newly created item, must have "cod_" prefix.
Suppose you create a menu item called "cod_testi18n".
Now you have to manually fill the sbi_i18n_messages table in SpagoBI metadata database, as
follows:

LANGUAGE_CD: The value_id of the sbi_domain table corrensponding to the language


you want to use. (Use SELECT VALUE_ID FROM sbi_domains WHERE DOMAIN_CD
= 'LANG'; to detect value_id)

LABEL: the name of the menu item (ex. cod_testi18n)

MESSAGE: the localized message

ORGANIZATION: the tenant name (you can find querying SELECT * FROM
sbi_organizations s;)

Automatic label translation


SpagoBI Babel is a small application to automatically translate document labels within a
SpagoBI project.

Themes
From SpagoBI 4 is possibile to define a complete theme activable from the setting GUI by the
administrator.
For 'complete' theme we intend that you can also specify the styles as well as the content of
home pages. In fatc under the jsp folder are present :

adminHome.jsp : the layout file for administration role

publicUserHome.jsp : the layout file for the public user when is presents

userHome.jsp: the layout file for final users

login.jsp: the layout for the login action

Instead, the 'signup' folder contains the pages used to manage the final user signup / modify
action.
Images, html, css, jsp files are grouped under the path: web_content/themes/theme_name
There is a sbi_default theme where all resources are grouped, and this is taken as default if the
user does not define other themes.
To activate a different theme from the sbi_default is necessary specify the folder name into the
configuration GUI (we suggest you to use the filter on THEMES category):

So, to create a new theme:

create a new folder under themes (you can copy the sbi_default just to start with all files)

modify the interested files (css, jsp, js, ...)

Multi tenancy
Multi-tenancy is supported starting SpagoBI 3.5

1 Overview

2 Configuration

1 Overview
Starting version 3.5, SpagoBI supports multi-tenancy, i.e., the use of the same SpagoBI instance
by different organizations, called tenants.
In a multi-tenancy architecture, each tenant owns and manages its users, documents, analytical
drivers and so on, which are completely independent from those owned by other tenants.
In the current version, multi-tenancy is implemented according to certain criteria. As far as the
behavioral model is concerned, the following rules apply:

each user belongs to one tenant only;

each user is defined unambiguously over the whole set of users, belonging to all tenants.
This means that if a user has been defined for a given tenant, no user with the same name
can be defined for another tenant;

roles and profile attributes can be defined across tenants. This means that users belonging
to different tenants may assume the same role or have the same attribute profiles.

The following elements are shared across tenants:

general configuration and domain management;

layout of the web interface is also shared across tenants;

repository of static resources (e.g., OLAP schemas, QbE datamarts, HTML static pages);

data source configuration in the application server. Although the data source
configuration is shared across tenants in the application server, each tenant will have to
define his own data sources at application level.

2 Configuration
At first execution, SpagoBI will create the default tenant, called SPAGOBI. If you do not need
multiple tenants, you can simply ignore this feature as SpagoBI will normally work with the
default tenant.

In case you wish to change the name of the default tenant, you must do this before first server
execution. In particular, you should perform the following operations:

change the name of the unique tenant you find inside file SpagoBI/WEBINF/conf/config/tenants.xml:

<?xml version="1.0" encoding="ISO-8859-15"?>


<TENANTS>
<TENANT name="your tenant's name" />
</TENANTS>

in file SpagoBI/WEB-INF/conf/config/internal_profiling.xml change the name of the


default tenant for all pre-defined users.

If you dont need additional tenants, you are done.


In case you need to add multiple tenants, here is the procedure you should follow:

stop the application server

edit file SpagoBI/WEB-INF/conf/config/tenants.xml to add more tenants. An example


with two tenants is shown below:

<?xml version="1.0" encoding="ISO-8859-15"?>


<TENANTS>
<TENANT name="TENANT A" />
<TENANT name="TENANT B" />
</TENANTS>

edit file SpagoBI/WEB-INF/conf/config/internal_profiling.xml to add at least one


adiministrator per tenant. This will allow the administrator to further define roles, users,
documents and so on. Below an example:

<?xml version="1.0" encoding="ISO-8859-1"?>


<INTERNAL_PROFILING_INITIALIZER>
<DEFAULT_USERS>
....
<default users for TENANT A>
....
<USER userId="<user id administrator>" password="<password administrator>"
fullName="full name administrator" organization="TENANT B">
<ATTRIBUTE name="attribute tenant B" value="TENANT B"/>
<ROLE name="/spagobi/admin"/>
</USER>
</DEFAULT_USERS>
<DEFAULT_ATTRIBUTES>
....
< default attributes for TENANT A>
....
<ATTRIBUTE name="attribute tenant B" description="attribute tenant B"
organization="TENANT B"/>
</DEFAULT_ATTRIBUTES>

<DEFAULT_ROLES>
....
<default roles for TENANT A>
....
<ROLE roleName="/spagobi/admin" description="/spagobi/admin"
roleTypeCD="ADMIN" organization="TENANT B"/>
</DEFAULT_ROLES>
</INTERNAL_PROFILING_INITIALIZER>

restart the application server.

You are done! At server startup the new tenant will be created with its default users, which will
then create the analytical and behavioral model for that tenant.

Login page, banner and footer customization


Login page customization
To customize the login page you have to modify the file login.jsp located into folder

[YOUR_APPLICATION_SERVER_PATH]\webapps\SpagoBI\WEB-INF\jsp\wapp

where [YOUR_APPLICATION_SERVER_PATH] is the path to the root dir of the application


server in which you have deployed SpagoBI (ex. C:\apache-tomcat-6.0.33).

Main page customization


To customize the header and footer of the main page (the one that you can see after login) you
have to modify respectively the files banner.html and footer.html located into folder

[YOUR_APPLICATION_SERVER_PATH]\webapps\SpagoBI\themes\
[YOUR_THEME_NAME]\html/

where [YOUR_APPLICATION_SERVER_PATH] is the path to the root dir of the application


server in which you have deployed SpagoBI (ex. C:\apache-tomcat-6.0.33) and is the name of
the theme on which you want to apply the modification. The banner and footer are infact related
to the theme. Different themse have different headers and footers associated to them. When the
user change the theme, the footer and the header change also properly. If you have not defined
your custom themes you can just modify the header.html and footer.hatml file of the default
theme located into folder:

[YOUR_APPLICATION_SERVER_PATH]\webapps\SpagoBI\themes\sbi_default\html/

Advanced topics

1 Tomcat security constraints

1 Tomcat security constraints


When a Tomcat security constraint ( tag in web.xml) is defined in a SpagoBI context (SpagoBI
core or external engine) you can experience problems when you try to print documents
containing images (images are not printed) or when exporting documents in PDF, XLS, (you
get an error when downloading file), in particular if you use IE.
This can occur, as an example, if you use SiteMinder as SSO system.
This is because, when a context is protected by a security constraint, Tomcat adds the following
HTTP headers into the response containing a file:
Pragma: No-cache
Cache-control: No-cache
while SpagoBI engines put opposite HTTP headers in order to let the browser cache the images.
To fix this, you just have to configure the authenticator to not do this: when defining the
authenticator class in the context definition file, add the disableProxyCaching="false" property.
Here below you the see example for SpagoBIJasperReportEngine context.xml:

<Context path="/SpagoBIJasperReportEngine "


docBase="SpagoBIJasperReportEngine" ..... >
<Valve className="...... Authenticator class ........"
disableProxyCaching="false" />
</Context>

Remember that JBoss has an embedded Tomcat servlet container, therefore this can be applied
also to JBoss. In this case, the context.xml file is something like that:

<Context cookies="true" crossContext="true">


<Valve className="...... Authenticator class ........"
disableProxyCaching="false"/>
</Context>

Some useful links:


http://www.cafesoft.com/products/cams/tomcat-security.html
http://www.mail-archive.com/tomcat-user@jakarta.apache.org/msg151294.html

SpagoBI can run in Portlet or Web mode.


To switch into Web mode you have to:
1) change the parameter 'mode' inside the configuration file 'WEBINF/conf/spagobi/spagobi.xml'

<SPAGOBI-MODE mode="WEB"/>\\<!-- SPAGOBI-MODE mode="PORTLET" /-->

2) Change the security configuration into the configuration file 'WEBINF/conf/spagobi/spagobi.xml'.


Please note that you need to put inside the WEB-INF/lib directory the jar of the ldap security
provider implementation.
\\<SECURITY>\\
it.eng.spagobi.security.init.LdapSecurityProviderInit</PORTAL-SECURITY-INITCLASS>\\
\\
<CONFIG />\\
</PORTAL-SECURITY-CLASS>\\
<USERPROFILE-FACTORY-CLASS
className="it.eng.spagobi.security.LdapUserProfileFactoryImpl" />\\
<ROLENAME-PATTERN-FILTER>.&#42;</ROLE-NAME-PATTERN-FILTER>\\</SECURITY>
\\\\

To learn how to start with an ldap server and how to configure SpagoBI for using ldap read the
document
'SpagoBI_ldap_security.doc'.
3) Uncomment the initializers inside the file 'WEB-INF/conf/config/initializer.xml'

<!-- Start Initializer to enable when running in web mode

-->

<!-- Start Initializer to enable when running in web mode -->\\<INITIALIZER


class="it.eng.spagobi.security.init.SecurityInitializer" config=""
/>\\<INITIALIZER class="it.eng.spagobi.init.TreeInitializer"
config="SPAGOBI.TREE&#95;INITIALIZATION" />\\<!-- End Initializer to enable
when running in web mode -->
<!-- End Initializer to enable when running in web mode

-->

4) Comment, into the file 'WEB-INF/web.xml', the definitions and mappings of the portlet
listener
and portlet servlet.
<!-\\<listener>\\
<listenerclass>org.exoplatform.services.portletcontainer.impl.servlet.PortletApplicatio
nListener</listener-class>\\</listener>\\-->\\<!-\\<servlet>\\
<servlet-name>PortletWrapper</servlet-name>\\
<servletclass>org.exoplatform.services.portletcontainer.impl.servlet.ServletWrapper</s
ervlet-class>\\</servlet>\\-->
\\<!-\\<servlet-mapping>\\
<servlet-name>PortletWrapper</servlet-name>\\
<urlpattern>/PortletWrapper</url-pattern>\\</servlet-mapping>\\-->

6) Uncomment master configuration file enabling webapp files:

<!-- webapp -->\\


<CONFIGURATOR path="/WEB-INF/conf/webapp/modules.xml"
/>\\
<CONFIGURATOR path="/WEB-INF/conf/webapp/pages.xml" />\\
<CONFIGURATOR path="/WEB-INF/conf/webapp/presentation.xml" />\\
<CONFIGURATOR path="/WEB-INF/conf/webapp/publishers.xml" />\\
<CONFIGURATOR
path="/WEB-INF/conf/webapp/security.xml" />\\
<CONFIGURATOR path="/WEBINF/conf/webapp/menu.xml" />\\
<CONFIGURATOR path="/WEBINF/conf/webapp/actions.xml" />\\

7) check that the following libraries are contained into the WEB-INF/lib directory or into the
classpath of the
application server. You can find all this libraries into the directory 'WebModeLibraries'.
- hibernate-3.1rc2.jar (or major)
- ehcache-1.1.jar (or major)
- slf4j-log4j12.jar
- cglib-2.1_2.jar (or major)
- asm-1.5.3.jar (or major)
- portlet-api-1.0.jar

- commons-digester-1.6.jar (or major)


- xercesImpl.jar (or major)
- jdt-compiler-3.1.1.jar (or major)

Functionalities tree

1 SpagoBI Functionalities Tree

2 How to create a new folder (functionality)

3 How to assign role visibility

1 SpagoBI Functionalities Tree


SpagoBI uses its own file system, named Functionalities Tree, which allows to better organize
documents by grouping them in folders. Access to those folders is regulated by role-based
permissions. This multi-level hierarchical structure can be created and modified only by the
administrator via the Functionalities Management menu item.

2 How to create a new folder (functionality)

By clicking on a node of the Functionalities Tree a set of possible actions is shown:

Delete to remove an existing functionality, if this does not contain any sub-node.

Move up or Move down to change folders order.

Insert to create a new functionality.

By choosing the Insert option, the administrator is prompted a window where he can fill in all
required information. This new element will be child of the selected one. Detailed information
regarding an existing functionality can be displayed and modified by selecting the Detail option.

3 How to assign role visibility


Each folder is characterized by a name, a unique code and a optional brief description.
The list of the Roles allows the administrator to choose for the selected functionality whether to
assign or remove permissions required for the development, test or execution phase for each role.
For instance, checking the Development and the Test boxes of the SpagoBI developers group,
all users belonging to that group will only be able to develop and test documents contained into
the selected functionality, but not to execute them when they are in Released state.

When the administrator adds or modifies a functionality, all permissions that can be added or
removed wrt.to each role follow a well defined policy:

When we create a new functionality, by adding a new folder to the tree, it inherits
automatically all permissions of the father node.

Any permission not owned by the father node cannot be assigned neither to its direct
children, nor to any other descendant.

Basically, permission management is configured in such a way that we can never assign to a
child functionality a permission that his father does not have, and this behaviour is propagated
from the root to the leaves of the functionalities tree.

Profile Management

1 SpagoBI Profile Management


o 1.1 Roles GUI
o 1.2 Attributes GUI
o 1.3 User GUI

1 SpagoBI Profile Management


SpagoBI server provides its own profile management. Users, roles and user attributes are stored
in SpagoBI database.
At server startup the internal profile initializer checks if default datas (such as administrator user
and role) are already present on database, otherwise
it loads them using its configuration informations.
It is possible to access SpagoBI Profile Management for administrators to add/modify or delete
profile informations.

1.1 Roles GUI


By accessing Roles Management menu voice, user can see the list of available roles.

Selecting one record of the list it is possible to see its detail in the right tab "Details". While
clicking over the "Authorizations" tab,
user can see authorizations for the selected role. Editing these forms and selecting the save
button
at the top of the right panel, saves the changes on database.
Clicking over the

erase button, user is able to delete the selected role.

To add a new role user clicks on add button at the top of the list, and an empty form is shown
in the right tab.
To synchronize the roles list with external roles clicks on refresh button at the top of the list.
This functionality is available only for the systems that don't use the internal profiling
management.
To save changes user clicks on the save button at the top of the right panel.

1.2 Attributes GUI

By accessing Profile Attributes Management menu voice, user can see the list of available
attributes as name and value pair.

Double clicking on the desired record of the list, user can edit attribute name and value.
Clicking over the erase button, user is able to delete the selected attribute.
To add a new attribute user clicks on add button at the top of the list, and an empty record is
added.

1.3 User GUI


By accessing Users Management menu voice, user can see the list of available users.

Selecting one record of the list it is possible to see its detail in the right tab "Details". While
clicking over the "Roles" tab,
user can see roles for the selected user and clicking on the "Attributes" tab user can see all
available profile attributes for the selected user.
Editing these forms and selecting the save button at the top of the right panel, saves the
changes on database.
Clicking over the

erase button, user is able to delete the selected user.

To add a new user, it is possible to click on


is shown in the
right tab. To save changes user clicks on the

add button at the top of the list, and an empty form


save button at the top of the right panel.

Analytical Drivers
Analytical Drivers

1 Introduction

2 Analytical drivers and LOV


o 2.1 LOV

2.1.1 LOVs in the SpagoBI Demo

o 2.2 The relationship between Analytical Driver and LOV

2.2.1 Analytical Driver and LOV in the SpagoBI Demo

2.2.2 How to create a new analytical driver - LOV association

1 Introduction
An analytical driver is an autonomous entity that models a business concept in order to use it as a
discriminating criterion in the global data context, according to the different end-user roles.
Designing an analytical driver means answering to the following questions:

Who? Which role use the analytical driver

What? Which is the list of valid values for the analytical driver

How? What checks are necessary when using the analytical driver

The same analytical driver may be shared between different analytical documents. Whenever
possible it is strongly suggested to detect the set of analytical drivers before starting developing
the corresponding analytical documents. In that way changes to the company role or structure
that can occur after the design of the behavioural model has been completed, can be managed by
modifying only the involved analytical drivers without affecting the analytical documents
already in place.

2 Analytical drivers and LOV

2.1 LOV
LOV stands for List of Values. They represent the valid values for an analytical driver. To define
a LOV in SpagoBI you can use several methods:

a query

a script

a list of fixed values

a Java objects

a Dataset

When using a query you have to provide the SQL statement to retrieve values from the database.
When using a script you have to write a Groovy or Javascript script in order to generate the
values.
When using a list of fixed values you are actually providing a list of value, description pairs.
When using a Java objects you must indicate the classname of a Java class that will generate the
values.
When using a dataset you must indicate the dataset label have already definied in dataset list.
Note that the dataset must not contain parameters, while profile attributes are allowed.
Indipendently from the method you are using to retrieve or produce values for the LOV, you
should consider that each value for the LOV can be a tuple with several columns. You will have
to specify the column that contains the actual value that will be used in the analytical driver
linked to the LOV.
As an example, imagine a LOV representing cities, countries and continents as in the following
list: {1,Paris,France,Europe},{2,Marseille,France,Europe},{3,Milan,Italy,Europe},
{4,London,UK,Europe},{5,NewYork,USA,NorthAmerica} and so on Each LOV row contains
4 columns, only one of them (e.g. the ID) can be selected as the column representing the actual
value of the LOV, all other columns can be used as description and made visible or not
2.1.1 LOVs in the SpagoBI Demo
If you look at the SpagoBI demo you can find examples of LOV and practice with them. Connect
to the demo as a SpagoBI administrator (e.g. with the user biadmin/biadmin) and go to the
Behavioural Model - LOVS Management menu. Then select as an example the

FOODMART_DEPARTMETNTS LOV and edit its detail by clicking on the corresponding


magnifying glass. You will see all properties of this LOV:

label

name

description

input type (in this case a query)

data source

query definition

The last two properties depends on the fact that a query has been chosen as the input type for the
LOV. If you click on the Test icon you will execute the query and get the results for this LOV,
that is a list of values that you will attach to an analytical driver as explained in the next section.
You can verify that ony one column, in this case the "department" has been selected as the
column containing the actual value for the LOV, all other columns add useful information for the
user and can be made visbile or not.

2.2 The relationship between Analytical Driver and LOV


You can attach several LOV to an analytical driver. Each LOV represents different ways to use
the same analytical driver. These different ways can be:

a different user interface to pick the value for the LOV (list selecion, check list, combo
box)

a different set of values to be selected (two or more LOVS attached to the same analytical
driver typically returns different values according to the user role)

different set of check on the LOV values

2.2.1 Analytical Driver and LOV in the SpagoBI Demo


Let's have a look to the SpagoBI demo in order to better understand the conecpt of associating a
LOV to an Analytical Driver. Connect to the Demo by using an administrative user, as
biadmin/biadmi and select the Behavioural Model - Analytical Drivers Management menu. Look
as an example to the FOODMART_DEPARTMENTS analytical driver. You can see, in the
column "N. Use Modes" the number of different ways to manage this analytical driver. Click on
the magnifying glass to look at the analytical driver's properties. You will see in the upper
window:

the label

the name

the description

the type

the functional and temporal check option

In the lower window you will see a tab for each different way to user the anaytical driver and the
"New ..." Tab to define a new way to use the analytical driver. In this example you can see that
there is a single way to use the parameter, called "All", that represent the association between the
FOODMART_DEPARTMENT analytical driver and the FOODMART_DEPARTMENTS LOV.
Let's look at the properties of this association:

a Label

the name of the association

the description of the association

the associated LOV

the type of input selection

a section indicating the roles that will use the analytical driver in the way described by
this association

a section indicating the predefined checks on the anaytical driver values

2.2.2 How to create a new analytical driver - LOV association


Now suppose we want to create a new assocation for our analytical driver
FOODMART_DEPARTMENT. The operation we will have to do are the following:

choose and if necessary create the role that will use this new association

create a new LOV to return valid values for this role

define a new association between the analytical driver and the newly created LOV and
specify the role that will use this association

Typically new LOVs are created to restrict the set of valid values for an analytical driver, so in
this example you can practice to limit the number of records to those that belongs to the "Food"
product family. You will create a FOODMART_DEPARTMENTS_FOOD LOV, attach it to the
FOODMART_DEPARMENTS analytical driver and authorize, as example, to a
PRODUCT_FOOD role that you will create and associate to some users.
But what if you have more product family to manage ? You will have to create a LOV and a role
for each product family or you can do more and better by using profile attributes. Imagine to
define a "product_family" attribute for your users that can get several values (Food, Drink, ...).
You will create for example the FOODMART_DEPARTMENTS_BYFAMILY LOV and add a
clause in the query statement to restrict the result set to records matching the product_family user
attributes to the product_family column in the database. The syntax to do this is to use the $ sign
to access the profile attributes, that is as example where product_family = '$
{product_family}'.

Create a new Document

1 What is a SpagoBI document

2 How to manage documents

3 How to assign Analytical Driver to a Document

1 What is a SpagoBI document


Each SpagoBI analysis must be configured as a document, e.g., report, olap, chart, etc. Each
document has some information attached to it (metadata) and a template (i.e., a file in a specific
format).

The developer can create a new document using button + in DOCUMENTS DEVELOPMENT
LIST ( in the right corner )

2 How to manage documents


A list of all Analytical Documents registered in SpagoBI is shown in the Documents
Configuration by the developer. This area allows the developer to manage the documents.
Each document is described by a subset of its attributes, as follows:

Label: the document unique identifier;

Name: the document name;

Description: a brief description of the document (optional);

Type: this field shows if the document is a Report, an On-line analytical processing
(OLAP), a Data Mining model, a Dashboard, etc.;

Engine: the Engine that this document are using.

Data Source: the Data Source used by this document for read the data.

State: this information indicates if the document must be developed (Development),


tested (Test) or can be executed (Released). Moreover the document can also be
Suspended if it cannot be executed anymore;

Refresh in second: the number of second used to refresh this document.

Visible: a flag indicationg if the document is visible when it is in Released state;

Visibily restriction: a logical expression that can be used to hide this document.

Template: a file containing the model of the document to be created with an external
application suitable for the specific type of the Analytical Document. On the right hand
side of the page, in the Template Version table, all templates that have been selected for
this document since it was created are listed. For each template, this list specifies the
version identifier, the date when this selection occurred first and the name of the file.
Through this view, the user will always be able to erase, download or select one of the
listed templates.

Each document must have one or more folder associated ( selected from the tree right )

3 How to assign Analytical Driver to a Document


In the lower part of the page you can see all parameters applied to the document. In the
DOCUMENT ANALYTICAL DRIVER DETAILS section the following information can be
defined:

Title: the title of the document parameter;

Parameter: the parameter that is applied to this document;

Url Name: the key of the parameter: the URL for the document execution will contain an
attribute with key specified by the content of this field and value specified by the
parameter value;

Priority: the document parameters are sorted by this number; clicking on the yellow
arrows you can make a single step shift for the current document parameter.

You can switch from one parameter to another by clicking on the required element in the tab list.

You might also like