Professional Documents
Culture Documents
New to SpagoBI?
Want to easily install and run SpagoBI?
Then follow these steps:
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
Now you are ready to play with the demo and explore SpagoBI 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:
OLAP, allowing the multidimensional analysis on data through flexible and user-friendly OLAP engines
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
Collaboration, to automatically create organized report dossiers, with comments and notes
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
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:
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
import/export
menu management
maps catalogue
engine configuration
subscription management
SSO
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
Notes
SpagoBI-bin-_.zip
CasServer-_.zip
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
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
Collaboration
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
SpagoBI Configuration
o Logging
o Mail Server
o DBMS Type
Database schema
o JNDI name
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.
label
name
description
document type: predefined list of document types that can be implemented using the
engine
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:
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
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.
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
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
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
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_
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
Modify SPAGOBI.SPAGOBI-MODE.mode
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
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:
DEV_ROLE: developer
TEST_ROLE: tester
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.
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:
2.1 ISecurityInfoProvider
This interface retrieves all defined roles and user attributes.
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.
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
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.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.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_AUTHORIZATIONS default="FALSE">
<CONFIG>
<USER_DN>cn=*,ou=People,dc=spagobi,dc=com</USER_DN>
<ADMIN_USER>cn=Manager,dc=spagobi,dc=com</ADMIN_USER>
<ADMIN_PSWddbcdd70d086e75bdc121b16bd23f03</ADMIN_PSW>
<ATTRIBUTES_ID name="nome">description</ATTRIBUTES_ID>
<ATTRIBUTES_ID name="cognome">sn</ATTRIBUTES_ID>
<ATTRIBUTES_ID name="userId">cn</ATTRIBUTES_ID>
<HOST>localhost</HOST>
<PORT</PORT>
<OBJECTCLASS>person</OBJECTCLASS>
<SEARCH_ROOT>ou=People,dc=spagobi,dc=com</SEARCH_ROOT>
<OU_ATTRIBUTE>ou</OU_ATTRIBUTE>
<SEARCH_ROOT_GROUP>ou=Group,dc=spagobi,dc=com</SEARCH_ROOT_GRO
UP>
<OBJECTCLASS_GROUP>organizationalUnit</OBJECTCLASS_GROUP>
<ATTRIBUTES_ID_GROUP>description</ATTRIBUTES_ID_GROUP>
<ATTRIBUTES_ID_GROUP>OU</ATTRIBUTES_ID_GROUP>
</CONFIG>
</LDAP_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
and then
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
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.
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.
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
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
Why SSO ?
It is not compulsory but recommended for the production environment, in order to avoid serious
security problems such as:
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.
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.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>
....
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
<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>
....
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.
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.
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.
Note: keystoreFile="conf/.keystore"
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 folder where youve deployed the SpagoBI war (for tomcat webapps).
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 folder where youve deployed the SpagoBI war (for tomcat /webapps).
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 folder where youve deployed the SpagoBIQbeEngine war (for tomcat
webapps).
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 folder where youve deployed the SpagoBIQbeEngine war (for tomcat
webapps).
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
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:
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).
lang
it
en
name
Mario
John
descr
Mario Rossi
Wayne
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.
Add the language at the end of the existing string as follows: ,[pl,PL]
.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 .
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.
ORGANIZATION: the tenant name (you can find querying SELECT * FROM
sbi_organizations s;)
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 :
publicUserHome.jsp : the layout file for the public user when is presents
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):
create a new folder under themes (you can copy the sbi_default just to start with all files)
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 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.
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:
<DEFAULT_ROLES>
....
<default roles for TENANT A>
....
<ROLE roleName="/spagobi/admin" description="/spagobi/admin"
roleTypeCD="ADMIN" organization="TENANT B"/>
</DEFAULT_ROLES>
</INTERNAL_PROFILING_INITIALIZER>
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.
[YOUR_APPLICATION_SERVER_PATH]\webapps\SpagoBI\WEB-INF\jsp\wapp
[YOUR_APPLICATION_SERVER_PATH]\webapps\SpagoBI\themes\
[YOUR_THEME_NAME]\html/
[YOUR_APPLICATION_SERVER_PATH]\webapps\SpagoBI\themes\sbi_default\html/
Advanced topics
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:
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'
-->
-->
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>\\-->
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
Functionalities tree
Delete to remove an existing functionality, if this does not contain any sub-node.
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.
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
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
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.
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.
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
Analytical Drivers
Analytical Drivers
1 Introduction
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:
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.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 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
label
name
description
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.
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)
the label
the name
the description
the type
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
a section indicating the roles that will use the analytical driver in the way described by
this association
choose and if necessary create the role that will use this new association
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}'.
The developer can create a new document using button + in DOCUMENTS DEVELOPMENT
LIST ( in the right corner )
Type: this field shows if the document is a Report, an On-line analytical processing
(OLAP), a Data Mining model, a Dashboard, etc.;
Data Source: the Data Source used by this document for read the data.
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 )
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.