O3 How To - Ideasoft

Transcripción

O3 How To - Ideasoft
1. O3 How To . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1 Consultas y Análisis con O3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1.1 Curva de Lorenz y Paretto (80-20) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1.2 Expresiones calculadas del usuario (las más usadas) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1.3 Regresión y correlación lineal entre dos variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1.4 Rangos en expresiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 How To O3 Report . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.1 ¿Cómo aumentar la memoria de Reporting.bat? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.2 HowTo agregar totales en un crosstab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.3 HowTo Configurar el envío automático por mail de un reporte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.4 HowTo Crear reporte con columnas variables según parámetro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.5 HowTo crear reporte usando fechas relativas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.6 How To Efectuar cálculos con elementos de filas contiguas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.7 HowTo efectuar cálculos con valores de distintas tablas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.8 HowTo Modificar configuración para que el Report corra en 32bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.9 HowTo ordenar fechas en reporte con numero variable de columnas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.10 HowTo Parametrizar un Conjunto de Datos de tipo XML (Data Set XML) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.11 HowTo utilizar links en un reporte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.12 O3 Report - Ubicación de drivers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3 How To O3 Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3.1 HowTo formato de mail enviado por regla simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3.2 HowTo Imprimiento la tabla con los mismos colores mostrados en pantalla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.4 How To O3 Scorecard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.4.1 Ayudas en scorecard web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.4.2 HowTo Formatear números en los tableros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.4.3 Reconstruir un Scorecard desde la linea de comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.5 How To O3 GIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.5.1 O3 GIS - Cliente Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.5.2 O3 GIS - Definir Gradiente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.5.3 O3 GIS - Funcionamiento y configuración del módulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.5.4 O3 GIS - Modificar Nivel de Zoom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.5.5 O3 GIS - Scorecard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.5.6 O3 GIS - Shapefiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6 How To O3 Portal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6.1 Cómo modificar la Lista de Componentes del O3Portal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6.2 Customización de O3 Portal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6.3 HowTo Conectarse al O3webportal mediante ssl (https) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6.4 HowTo Conectarse al portal mediante ssl (https) O3 anteriores a 5.0.050 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6.5 HowTo definir reglas con fechas relativas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6.6 HowTo eliminar al modo edición en al portal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6.7 HowTo Utilizando Build Now! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6.8 Login anónimo en O3 Portal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6.9 Múltiples O3 Web con distinto L&F . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6.10 Personalización de los Bookmarks del Portal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6.11 Personalización gráfica del portal 4.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6.12 Personalización gráfica del portal 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.7 How To Instalación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.7.1 Como instalar en Windows 2003? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.7.2 How To Cambiar plataforma de O3 a 64 bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.7.3 HowTo Correr JBoss con JVM 1.5 de IBM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.7.4 How To instalación de licencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.7.5 HowTo Instalar O3 cambiando el directorio temporal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.7.6 HowTo Instalar O3 en Suse 10.x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.7.7 HowTo Instalar O3 multiplataforma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.7.8 HowTo JBoss como Servicio en Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.7.9 How To migrar versiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.7.10 Instalación manual de JBoss como servicio en Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.7.11 Respaldar la Instalación de O3PS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.8 Configuración de O3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.8.1 ¿Cómo cambiar los data sources de O3 y Enterprise Portal? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.8.2 Configuracion de firewall en versión mayor o igual a O3v4.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.8.3 Configurando O3 a través de un Firewall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.8.3.1 Configuración de firewall en versión menor a O3v4.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.8.4 Configurando O3 a través de un NAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.8.5 Configurando O3 a través de un Proxy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.8.6 Eligiendo Idioma, Región, Zona Horaria para O3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.8.7 HowTo configurar programaciones con base de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.8.8 HowTo O3 Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.8.8.1 Generacion de formularios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.8.8.2 O3 Process & eMail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.8.8.2.1 Ejemplo mail formato html . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.8.8.2.2 Ejemplo mail formato texto plano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.8.8.2.3 Objetos y macros disponibles usando Velocity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.8.8.3 Publicacion formulario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.8.8.4 Web menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
6
7
7
10
10
12
12
12
14
15
19
21
24
24
25
27
29
31
31
31
32
33
33
34
35
37
37
41
42
49
50
52
54
54
55
58
60
61
62
63
64
66
69
74
75
77
77
77
79
80
84
84
85
86
86
87
87
88
88
90
91
92
93
96
98
100
102
102
103
104
105
106
107
107
1.8.9 HowTo O3 Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.8.10 HowTo Seguridad de O3 en LDAP y Active Directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.8.11 HowTo Server con multiples tarjetas de red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.8.12 Instalando O3 Portal en otros servidores Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.8.13 Memory Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.8.13.1 HowTo patch Jboss, problemas de consumo de memoria con Jboss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.8.14 O3 How-to Optimizacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.8.14.1 HowTo Optimizar los tiempos de construcción en el builder y designer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.8.14.2 O3 Redundancy Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.8.15 Single Sign-On . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.8.15.1 Problemas con CAS ejecutando detrás de un firewall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.8.15.2 Single Sign On de O3 con aplicaciones existentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.9 How To Eportal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.9.1 Guía de administración de Liferay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.9.2 HowTo Agregar Mapas de Google . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.9.3 HowTo cambiar apariencia de la página de bienvenida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.9.4 HowTo cambiar la base hypersonic por otra base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.9.4.1 Migrar Liferay a Oracle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.9.5 HowTo crear una nueva comunidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.9.6 HowTo crear una nueva organización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.9.7 HowTo Crear usuario administrador en una comunidad del Enterprise Portal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.9.8 How To definir administrador por comunidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.9.9 HowTo Definir permisos sobre páginas en ePortal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.9.10 HowTo donde almacena los documentos e imágenes eportal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.9.11 HowTo drill across en eportal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.9.12 HowTo ePortal y localhost . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.9.13 HowTo exportar e importar una comunidad en eportal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.9.14 HowTo importar páginas de otra comunidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.9.15 HowTo instalar nuevo tema de apariencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.9.16 HowTo Instalar nuevo theme Default en ePortal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.9.17 HowTo Instalar plantillas en el Enterprise Portal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.9.18 HowTo Login Anónimo en ePortal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.9.19 HowTo ocultar el panel de control a usuarios anónimos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.9.20 HowTo ocultar menuItem Páginas públicas (0) en eportal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.9.21 HowTo personalizar una comunidad en eportal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.9.22 HowTo Quitar Mi Comunidad en ePortal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.9.23 Organizaciones vs. Comunidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.10 How To O3 AdmServer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.10.1 Cómo usar una nueva Base de Datos para RBAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.10.2 Definición y Permisos de Usuarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.10.3 HowTo Acceso y Configuración Página de Ayuda de un Cubo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.10.4 HowTo cambiar password al usuario system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.10.5 Migración O3Server.cfg a Base de Datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.11 How To JBoss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.11.1 Cambiar o deshabilitar la password de la jmx-console . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.11.2 HowTo Aumentando el nivel de log del O3 Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.11.3 HowTo Cambiar el puerto 8080 en JBoss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.11.4 HowTo cambiar el timeout de la sesión de O3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.11.5 HowTo - Cambio de puertos del Servidor de O3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.11.6 HowTo configurar el Servicio de Mail de JBoss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.11.7 HowTo encriptar las passwords de las fuentes de datos (en gral, bases de datos) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.11.8 HowTo Monitorear uso de memoria del JBoss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.11.9 HowTo ocultar o modificar la pagina de inicio de JBoss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.11.10 HowTo patch para problemas de consumo de memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.11.11 HowTo Workaround problema nombre del server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.11.12 O3 Consideraciones de Seguridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.12 Diseño de modelos multidimensionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.12.1 Cómo se usan los distintos métodos de agregación para saldos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.12.2 Tips de Diseño . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.12.2.1 Agregando datos de entrada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.12.2.2 Comparando los valores de un día respecto al promedio de los últimos N . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.12.2.3 Customizando las plantillas de páginas en ePortal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.12.2.3.1 Accediendo a bases de datos desde BeanShell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.12.2.4 Definición de Medida Derivada de tipo 'Count Distinct' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.12.2.5 Operando en tablas con cantidades variables de filas y columnas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.12.2.6 SaldosAMovimientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.13 How To O3 Browser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.13.1 ¿Cómo hacer para que browser -debug escriba en el log, para clientes en los que se instaló por javaws? . . . . . . . . . . . .
1.13.2 HowTo Accediendo a cubos de MSAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.14 How To O3 Designer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.14.1 Drivers JDBC más utilizados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.14.1.1 HowTo Crear Conexiones a MySQL sin que cargue todos los datos a memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.14.1.2 Service Pack para Relativity v 11.00 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.14.2 HowTo Accediendo a datos de Lotus Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.14.3 HowTo Accediendo archivos DBF y Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
107
110
113
114
114
116
116
118
119
121
121
121
124
124
124
125
125
131
131
133
133
134
134
138
140
140
140
143
145
145
148
150
150
151
152
153
153
154
154
155
156
156
157
160
160
162
163
163
163
166
168
168
169
170
171
171
172
172
173
174
175
177
177
179
182
183
185
185
186
186
186
192
192
193
193
1.14.4 HowTo Envio de mail con servidor SMTP que requiere TLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.14.5 How to Utilizando drivers ODBC de 32 bits en SO de 64 bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.14.6 How To Utilizando drivers ODBC para archivos de texto (ASCII) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.14.7 Usando la función debug() para ver expresiones calculadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.15 How To O3 Builder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.15.1 Cambio de directorio temporal - Builder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.15.2 How To Generar log de la construcción del cubo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.15.3 HowTo pasar parámetros al builder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.15.4 HowTo pasar una password encriptada como parámetro a builder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.16 How To O3 en Base de Datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.16.1 Exportación de RBAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.16.2 How To Cambiar data sources de O3 y Enterprise Portal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.16.3 How To Migrar O3Server.cfg a Base de Datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.16.4 How To Usar una nueva Base de Datos para RBAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
194
195
196
199
200
200
200
201
202
203
203
203
204
207
O3 How To
Los HowTo aquí presentados son documentos que describen alternativas y procedimientos para activar distintos mecanismos del producto o
para lograr soluciones específicas para escenarios particulares.
How To - Instalación
Como instalar en Windows 2003?
How To Cambiar plataforma de O3 a 64 bits
HowTo Correr JBoss con JVM 1.5 de IBM
How To instalación de licencias
HowTo Instalar O3 cambiando el directorio temporal
HowTo Instalar O3 en Suse 10.x
HowTo Instalar O3 multiplataforma
HowTo JBoss como Servicio en Linux
How To migrar versiones
Instalación manual de JBoss como servicio en Windows
Respaldar la Instalación de O3PS
How To - Configuración
¿Cómo cambiar los data sources de O3 y Enterprise Portal?
Configuracion de firewall en versión mayor o igual a O3v4.3
Configurando O3 a través de un Firewall
Configurando O3 a través de un NAT
Configurando O3 a través de un Proxy
Eligiendo Idioma, Región, Zona Horaria para O3
HowTo configurar programaciones con base de datos
HowTo O3 Process
HowTo O3 Properties
HowTo Seguridad de O3 en LDAP y Active Directory
HowTo Server con multiples tarjetas de red
Instalando O3 Portal en otros servidores Web
Memory Management
O3 How-to Optimizacion
Single Sign-On
How To - JBoss
Cambiar o deshabilitar la password de la jmx-console
HowTo Aumentando el nivel de log del O3 Server
HowTo Cambiar el puerto 8080 en JBoss
HowTo cambiar el timeout de la sesión de O3
HowTo - Cambio de puertos del Servidor de O3
HowTo configurar el Servicio de Mail de JBoss
HowTo encriptar las passwords de las fuentes de datos (en gral, bases de datos)
HowTo Monitorear uso de memoria del JBoss
HowTo ocultar o modificar la pagina de inicio de JBoss
HowTo patch para problemas de consumo de memoria
HowTo Workaround problema nombre del server
O3 Consideraciones de Seguridad
How To - O3 en Base de Datos
Exportación de RBAC
How To Cambiar data sources de O3 y Enterprise Portal
How To Migrar O3Server.cfg a Base de Datos
How To Usar una nueva Base de Datos para RBAC
Diseño de modelos multidimensionales
Cómo se usan los distintos métodos de agregación para saldos
Tips de Diseño
Consultas y Análisis con O3
Curva de Lorenz y Paretto (80-20)
Expresiones calculadas del usuario (las más usadas)
Rangos en expresiones
Regresión y correlación lineal entre dos variables
How To - O3 AdmServer
Cómo usar una nueva Base de Datos para RBAC
Definición y Permisos de Usuarios
HowTo Acceso y Configuración Página de Ayuda de un Cubo
HowTo cambiar password al usuario system
Migración O3Server.cfg a Base de Datos
How To - O3 Designer
Drivers JDBC más utilizados
HowTo Accediendo a datos de Lotus Notes
HowTo Accediendo archivos DBF y Excel
HowTo Envio de mail con servidor SMTP que requiere TLS
How to Utilizando drivers ODBC de 32 bits en SO de 64 bits
How To Utilizando drivers ODBC para archivos de texto (ASCII)
Usando la función debug() para ver expresiones calculadas
How To - O3 Browser
¿Cómo hacer para que browser -debug escriba en el log, para clientes en los que se instaló por javaws?
HowTo Accediendo a cubos de MSAS
How To - O3 Builder
Cambio de directorio temporal - Builder
How To Generar log de la construcción del cubo
HowTo pasar parámetros al builder
HowTo pasar una password encriptada como parámetro a builder
How To - O3 Rules
HowTo formato de mail enviado por regla simple
HowTo Imprimiento la tabla con los mismos colores mostrados en pantalla
How To - O3 Scorecard
Ayudas en scorecard web
HowTo Formatear números en los tableros
Reconstruir un Scorecard desde la linea de comandos
How To - O3 Report
¿Cómo aumentar la memoria de Reporting.bat?
HowTo agregar totales en un crosstab
HowTo Configurar el envío automático por mail de un reporte
HowTo Crear reporte con columnas variables según parámetro
HowTo crear reporte usando fechas relativas
How To Efectuar cálculos con elementos de filas contiguas
HowTo efectuar cálculos con valores de distintas tablas
HowTo Modificar configuración para que el Report corra en 32bits
HowTo ordenar fechas en reporte con numero variable de columnas
HowTo Parametrizar un Conjunto de Datos de tipo XML (Data Set XML)
HowTo utilizar links en un reporte
O3 Report - Ubicación de drivers
How To - O3 GIS
O3 GIS - Cliente Web
O3 GIS - Definir Gradiente
O3 GIS - Funcionamiento y configuración del módulo
O3 GIS - Modificar Nivel de Zoom
O3 GIS - Scorecard
O3 GIS - Shapefiles
How To - O3 Portal
Cómo modificar la Lista de Componentes del O3Portal
Customización de O3 Portal
HowTo Conectarse al O3webportal mediante ssl (https)
HowTo Conectarse al portal mediante ssl (https) O3 anteriores a 5.0.050
HowTo definir reglas con fechas relativas
HowTo eliminar al modo edición en al portal
HowTo Utilizando Build Now!
Login anónimo en O3 Portal
Múltiples O3 Web con distinto L&F
Personalización de los Bookmarks del Portal
Personalización gráfica del portal 4.3
Personalización gráfica del portal 5
How To - Eportal
Guía de administración de Liferay
HowTo Agregar Mapas de Google
HowTo cambiar apariencia de la página de bienvenida
HowTo cambiar la base hypersonic por otra base
HowTo crear una nueva comunidad
HowTo crear una nueva organización
HowTo Crear usuario administrador en una comunidad del Enterprise Portal
How To definir administrador por comunidad
HowTo Definir permisos sobre páginas en ePortal
HowTo donde almacena los documentos e imágenes eportal
HowTo drill across en eportal
HowTo ePortal y localhost
HowTo exportar e importar una comunidad en eportal
HowTo importar páginas de otra comunidad
HowTo instalar nuevo tema de apariencia
HowTo Instalar nuevo theme Default en ePortal
HowTo Instalar plantillas en el Enterprise Portal
HowTo Login Anónimo en ePortal
HowTo ocultar el panel de control a usuarios anónimos
HowTo ocultar menuItem Páginas públicas (0) en eportal
HowTo personalizar una comunidad en eportal
HowTo Quitar Mi Comunidad en ePortal
Organizaciones vs. Comunidades
Consultas y Análisis con O3
Consultas y Análisis con O3
Guías y material de ayuda con respecto al uso de O3 para realizar consultas y análisis sobre modelos multidimensionales.
Secciones
Secciones
Curva de Lorenz y Paretto (80-20) — Presenta una forma de obtener un análisis de distribución de una variable en una
población aproximándose a una curva de Lorenz
Expresiones calculadas del usuario (las más usadas)
Regresión y correlación lineal entre dos variables — Se muestra cómo graficar la regresión lineal entre dos variables y
cómo apreciar el coeficiente de correlación, tanto a partir de la gráfica como mediante una columna calculada.
Rangos en expresiones — Esta funcionalidad introducida en la versión 5.4 permite referenciar, en las expresiones de la
grilla de O3 Performance Suite, subrangos de los datos recorridos por las direcciones.
Curva de Lorenz y Paretto (80-20)
Cómo crear la curva de Lorenz con O3
Presenta una forma de obtener un análisis de distribución de una variable en una población aproximándose a una curva de Lorenz
Ejemplo: Se desea analizar los porcentajes de ventas acumuladas por vendedor a través de la curva de Lorenz (población: vendedores; variable
a controlar: unidades vendidas)
1. En una grilla ubicar la dimensión vendedor en las columnas y la medida unidades vendidas en las filas.
2. Ordenar los vendedores en forma ascendente segúna la medida corriente (unidades vendidas)
3. Agregar una columna calculada que halle, para cada vendedor el porcentaje que representan sus ventas en el total y luego lo acumule.
La fórmula es: ([group]/[group,root])*100.
En la sección de formato se puede elegir Porcentaje
En la ventana de Modificar Función, abrir la opción Avanzado. Hacer clic en la casilla Acumular para, y en el combo seleccionar
"Eje". (Ver imagen:
)
4. La vista queda de la siguiente forma:
Excluir de la vista la medida original de unidades vendidas (con botón derecho en
la fila de la medida Unidades vendidas, hacer clic en Excluir de la vista)
5. Pasar al modo gráfico, eligiendo la opción gráfico de líneas
Se llega a un gráfico como el que se muestra a continuación.
Como se puede ver, el gráfico se aproxima al análisis de la curva de Lorenz, pero no está completo, pues no determina en qué percentil se ubica
la población.
A su vez, estaría faltando encontrar una forma de graficar la recta de equidistribución.
Con esta misma secuencia de pasos es posible lograr un análisis de Paretto:
qué porcentaje de las ventas es acumulada por el 20% de los vendedores que venden más.
qué porcentaje de las ventas es acumulada por el restante 80% de los vendedores.
(Se llama análisis de Paretto pues fue Paretto quien observó empíricamente que se daba una relación 20%-80%: el
primer 20% de la población acumula el 80% de una variable, mientras que el otro 80% de la población acumula el 20%
restante de dicha variable)
Expresiones calculadas del usuario (las más usadas)
share
([group]/[group,root])*100
partial share (según la anidación en filas)
([group]/[group, group.parent])*100
share de la primera columna
(Valor(0)/[group.leaf(0),root])*100
Suma de las apariciones de un elemento dado de dimensión "DIMENSION"
@Sum_i(Etiqueta([this.leaf(i)],"DIMENSION")=="PP"? [this.leaf(i) ]: 0)
Si deseamos totalizar los valores de la medida "Units Sold", cuando la vista presenta esta y otras medidas anidadas podemos utilizar la siguiente
expresión.
Notar que en este caso el nombre de la dimensión correspondiente a las medidas se debe referenciar como "<measures>":
@Sum_i(Label([this.Etiqueta(i)],"<measures>")=="Units Sold" ? [this.leaf(i)]: 0)
Ejemplo:
En esta vista se tienen dos columnas calculadas: Unidades y Costo.
Donde Unidades se calcula como:
@Sum_i(Etiqueta([this.leaf(i)],"<measures>")=="Unidades" ? [this.leaf(i)]: 0)
Costo se calcula como:
@Sum_i(Etiqueta([this.leaf(i)],"<measures>")=="Costo" ? [this.leaf(i)]: 0)
En algunos casos no se requiere sumar las ocurrencias de un elemento, sino comprobar que se encuentre en la vista y en función de ello
efectuar cierto cálculo:
Etiqueta([this.leaf(0)], "En plazo")=="SI" ? (["SI"]/[this])*100 : 0
En este ejemplo se controla la existencia del elemento "SI" en una dimensión de nombre "En plazo", calculando el % de este elemento con
respecto al total.
Contar elementos cuando su valor es distinto a cero
Supongamos que tenemos una vista donde vemos los productos vendidos en los últimos 3 años. Los productos estan en las filas y años como
columnas. Queremos saber, cuántos productos se vendieron en cada año. La expresión predefinida "Cantidad" no sirve puesto que cuenta
también aquellas productos que tuvieron 0 ventas en un año determinado. La siguiente fórmula resuelve el cálculo (como fila calculada):
@Sum_i([this.leaf(i)]==0?0:1)
Cálculos con elementos no visibles
La opción excluir vista o exclude form view sobre un elemento de la grilla, permite quitarlo de la vista, pero que siga participando en las
expresiones calculadas que se agreguen en forma de fila o columna.
En el caso de expresiones definidas por el usuario, consideremos el siguiente ejemplo:
La expresión Expr es una suma del elemento Mountain Bikes + Route Bikes. Al excluir el cualquiera de los dos elementos (columnas) el valor de
la expresión Expr no se ve afectado.
La sintaxis requerida para expresiones donde eventualmente se pueden llegar a excluir elementos es:
[root."Mountain Bikes"]+[root."Route Bikes"]
En caso de tener una tabla o grilla con dimensiones anidadas se deberá especificar el camino absoluto a los elementos, al momento de definir la
expresión.
Si se requiere mostrar alguno de los elementos excluidos, se tiene la opción mostrar o unhide, con click botón derecho sobre la etiqueta de la
dimensión (nombre de la columna o fila).
Las expresiones predefinidas disponibles en O3 (suma, promedio, máximo, mínimo, cantidad, etc.) actúan sobre los elementos visibles en la
grilla, por lo que su resultado se ve afectado al excluir alguno de los elementos que participan en el cálculo.
Cálculos de Promedio excluyendo valores cero
Supongamos que tenemos una vista en la cual se calcula el promedio de unidades vendidas, pero algunos de los valores de la medida son
ceros, por ejemplo:
La suma de las unidades es 5+6+51=62 por lo que su promedio sin considerar los valores cero sería 62/3=21. Como se está tomando en cuenta
una fila más con valor cero el promedio difiere 62/4=16:
Para evitar esto y que nuestro cálculo excluya los ceros, más allá que se muestren o no los valores en la vista, definimos una expresión
"PromSinValorCero" con la siguiente sintaxis:
count=@Sum_i(Valor(i)!=0?1:0); count==0?0:([this]/count)
Luego de aplicar la fórmula antes definida obtenemos como resultado el promedio correcto:
Referenciar subrangos en una expresión
Rangos en expresiones
Refereniar a elemento anterior y/o siguiente en grilla
Ver Tutorial de uso de expresiones Fisrt y Previous
Regresión y correlación lineal entre dos variables
Se muestra cómo graficar la regresión lineal entre dos variables y cómo apreciar el coeficiente de correlación, tanto a partir de la gráfica como
mediante una columna calculada.
¿Cómo graficar una regresión lineal entre dos variables?
Conformar una vista que tenga en las filas las dos variables (medidas) a estudiar y en las columnas la variable que identifica cada
observación (por ejemplo tiempo, número de encuesta, individuo, etc.)
Pasar al modo gráfico eligiendo la opción Líneas Dispersión XY
Si se desea ver la recta que más se ajusta a los datos, dirigirse a Opciones y elegir Mostrar regresión lineal. En las referencias de la
gráfica se verá la ecuación de dicha recta.
Para ver el r^2, nuevamente en Opciones, elegir Desplegar correlación. En las referencias de la gráfica se verá, debajo de la ecuación
de la recta, el valor del r^2
¿Cómo calcular la correlación r (coeficiente de Pearson)?
Se puede utilizar la grilla de la vista anterior (en las filas las dos variables (medidas) a estudiar y en las columnas la variable que
identifica cada observación)
Agregar una columna calculada con una expresión creada por el usuario:
Corr([this,"nombre de la medida 1"],[this,"nombre de la medida 2"])
Al crear el cálculo editar la sección de formato indicando la cantidad de decimales (como mínimo 2) para poder
apreciar el resultado
El nombre en inglés de la función Corr es Pearson
Vínculo entre r2 y Pearson
r^2 = Pearson^2 (por aspectos teóricos relacionados con el coeficiente de correlación dirigirsa a esta página)
Rangos en expresiones
Esta funcionalidad introducida en la versión 5.4 permite referenciar, en las expresiones de la grilla de O3 Performance Suite, subrangos de los
datos recorridos por las direcciones.
Ejemplo 1
Se presenta la necesidad de conocer el promedio transcurrido de ventas de los últimos 12 meses, se aplica para ello el agregar una columna
calculada Promedio Ventas.
Prom(["Litros Vendidos",root.range(0,currentLeaf())])
Ejemplo 2
Se requiere hacer el siguiente cálculo C:
Products
Units Sold
Discount
C
Prod1
A1
B1
C1=AVG(A1)
Prod2
A2
B2
C2=AVG(A1:A2)
Prod3
A3
B3
C3=AVG(A1:A3)
Es decir que en cada celda C se promedia los valores de la columna "Units Sold" hasta la fila actual inclusive.
Solución
Con el nuevo soporte de rangos la expresión C puede definirse como:
Avg(["Units Sold", root.range(0, currentLeaf())])
Notar que para el cálculo de C se están recorriendo los valores del otro eje (las columnas en este caso), los cálculos normalmente recorrerían en
este caso la misma fila, es por eso que el operador range se utiliza en la segunda especificación de la dirección, también por eso se utiliza el
término root para referirse a la columna completa (sino se referiría solamente a la fila actual).
Otros ejemplos
Pueden especificarse otros valores para los límites del rango:
Ejemplo
Descripción
Evita la primer fila
["Litros Vendidos",
root.range(1, currentLeaf())]
Incluye desde la primer fila hasta la fila anterior a la actual
["Litros Vendidos",
root.range(0, currentLeaf() 1)]
["Litros Vendidos",
root.range(1)]
El segundo argumento del operador range es opcional, en este caso se especifica el
rango desde la segunda fila inclusive hasta el final
Especifica el rango desde la fila actual (inclusive) hasta el final
["Litros Vendidos",
root.range(currentLeaf())]
Especifica la última fila
size=@Cant_i(1); Valor(size 1)
How To O3 Report
Ayudas y explicaciones de cómo realizar operaciones con el componente O3Report
¿Cómo aumentar la memoria de Reporting.bat?
HowTo agregar totales en un crosstab
HowTo Configurar el envío automático por mail de un reporte
HowTo Crear reporte con columnas variables según parámetro
HowTo crear reporte usando fechas relativas
How To Efectuar cálculos con elementos de filas contiguas
HowTo efectuar cálculos con valores de distintas tablas
HowTo Modificar configuración para que el Report corra en 32bits
HowTo ordenar fechas en reporte con numero variable de columnas
HowTo Parametrizar un Conjunto de Datos de tipo XML (Data Set XML)
HowTo utilizar links en un reporte
O3 Report - Ubicación de drivers
¿Cómo aumentar la memoria de Reporting.bat?
1. Si no existe, crear archivo o3Reporting.ini en el directorio o3.rcp dentro de la instalación de O3 (<o3>/o3.rcp).
2. Agregar el siguiente contenido:
-vmargs
-Xmx512m
-XX:PermSize=128m
3. En caso de requerirse mas memoria, modificar el valor del -Xmx.
HowTo agregar totales en un crosstab
Contexto
Agregar subtotales y totales por filas o columnas utilizando el objeto crosstab.
Agregando Totales
Cómo ejemplo utilizaremos el siguiente crosstab:
1. Para agregar un SubTotal o Total, se debe seleccionar la celda, luego clickear sobre el ícono
muestra en la figura:
2. Se despliega el siguiente panel:
y seleccionar Totals, cómo se
donde observamos 2 pestañas
que nos indican dónde ubicar los subtotales o totales (filas o
columnas) en el diseño del reporte.
3. Marcar para el caso de SubTotales la(s) dimensión(es) de agrupación, y/o para los Totales (Grand Totals) la(s) medida(s).
4. Se agregan los totales en el reporte:
Para agregar subtotales se deben tener 2 o más dimensiones anidadas en la celda inferior izquierda del crosstab.
HowTo Configurar el envío automático por mail de un reporte
Pasos para configurar el envió de mail
1. Ingresar al O3 Server Administrator con una cuenta de Administrador
2. Agregar Programación de la hora y días que se quiera enviar el reporte
3. Parados sobre el nodo "Programaciones" seleccionar "Distribución de Reportes"
4.
5.
6.
7.
8.
9.
10.
11.
12.
Click en el botón de Agregar
Se selecciona el reporte que se quiera programar del combo box de Reporte
Se selecciona la programación de la hora que se va a enviar por mail el reporte del combo box de Programación
Se escribe el email del destinatario y el asunto.
El nombre del proceso se deja "Por Defecto"
En el campo usuario se pone el admin
Por último se escriben los parámetros obligatorios en el siguiente formato &param1=valor1&param2=valor2....
Click en aceptar
Click en Aplicar
HowTo Crear reporte con columnas variables según parámetro
Contexto
La idea es crear un reporte donde las columnas a mostrar/ocultar se seleccionen por parámetros.
Proceso
Como ejemplo para crear el reporte, se utilizará como fuente de datos el cubo de vinos usando mdx, para representar la siguiente vista:
1. Definimos un Conjunto de datos (DataSource) de tipo mdx, con la siguiente consulta:
SELECT
{Measures.[Litros Vendidos], Measures.[Venta Neta], Measures.[Costo]} ON COLUMNS,
{Vinos.Varietal.children} ON ROWS
FROM Vinos
WHERE (Fecha.[Año a la Fecha].[2008], Clientes.[Cuentas Pequeñas], Destinos.[Mercado Europeo])
2. Agregamos un grupo de parámetros, donde se van agrupar tres parámetros: Litros vendidos, Venta neta y Costo.
2.
Todos los parámetros deben ser definidos como requeridos y configurarse de la siguiente manera:
Tipo de dato: Booleano (boolean)
Mostrar Tipo: Casilla de verificación (check box)
3. Una vez definidos los parámetros, debemos vincular la selección de los mismos con las columnas a mostrar/ocultar. Para ello, se debe
seleccionar cada columna y en las propiedades, seleccionar Visibilidad (visibility), marcando la opción Ocultar elemento (hide element), y
dentro de está Para todas las salidas (for all inputs) y en expression escribir: params["LitrosVendidos"].value, params["VentaNeta"].value
y params["Costo"].value respectivamente.
De está manera estamos seteando incialmente la propiedad Visibildad en TRUE. Luego, al marcar el checkbox cuándo se ejecuta el
reporte, el estado de la propiedad Visibilidad cambia al valor FALSE y la columna se oculta.
4. En caso de que el usuario oculte las 3 columnas, se puede agregar una etiqueta con un mensaje informativo, por ejemplo, "Se ocultaron
todas las columnas del reporte". Está etiqueta, se debe definir fuera de la tabla, con la opción Ocultar elemento marcada y la siguiente
expresión:
if(params["LitrosVendidos"].value==true & params["VentaNeta"].value==true &
params["Costo"].value==true)
{
false
}else{
true
}
Es importante considerar el volúmen de información con el cuál se está trabajando, dado que el reporte definido de esta forma va a leer todos los
datos indicados, sólo que algunos los ocultará.
HowTo crear reporte usando fechas relativas
Contexto
Generar un reporte que se actualice de forma dinámica, una vez que cambie la fecha relativa utilizada en la vista.
Crear Reporte
1. Definir un Data Source para una Vista O3.
2. Definir un DataSet.
Cómo particularidad, la vista a utilizar, tendrá la fecha relativa en las filas en lugar de las columnas.
De está forma se evita referenciar a una fecha concreta, la cual a futuro va a cambiar, generando errores al ejecutar el reporte.
3. Generamos un nuevo Data Cubes (Vinos) y los respectivos Groups (Dimensiones) y Summaries (Medidas), que utilizaremos en el
3.
reporte.
4. Agregar un objeto CrossTab en el reporte.
5. Luego arrastramos los elementos que deseamos pertenezcan al reporte. La fecha relativa se debe posicionar en la celda superior
derecha, la(s) dimensión(es) restante(s) en la celda inferior izquierda y la(s) medida(s) en la celda inferior derecha.
Una vez se actualice la fecha relativa, el reporte se va actualizar sin necesidad de volver a generarlo o corregirlo.
How To Efectuar cálculos con elementos de filas contiguas
Contexto
Este how to explica cómo realizar cálculos con elementos de filas contiguas de un reporte. Aplica a reportes con cualquiera de las fuentes de
datos disponibles.
El operador Previous de O3 permite obtener el valor de un elemento de una celda (fila o columna) inmediatamente anterior. Esto es útil por
ejemplo para definir una expresión calculada en una vista de O3 que calcule la variación de una medida con respecto al valor anterior de la
misma.
(["Litros Vendidos"]-["Litros Vendidos", previous])/["Litros Vendidos", previous]*100
Cuando se utiliza una vista como fuente de datos de un reporte, las expresiones calculadas que contenga en forma de filas o columnas
no son tomadas como elementos del data set, por lo que debemos calcularlas directamente en la tabla en el reporte.
Ejemplo
Se tiene el siguiente reporte, definido con la vista anterior como data set. Se requiere agregar un elemento que calcule la diferencia % de los
litros vendidos cada mes, con respecto al mes anterior.
Para esto se debe agregar un objeto grid y dentro del mismo una tabla con los elementos del data set:
1. En el método beforeOpen del dataset definir e inicializar variable en 0:
2. En el método onCreate del binding Measures_Litros Vendidos cargar variable con el valor de la celda:
Con esto se tendrá la variable myvar cargada con el valor de cada instancia del objeto Measures_Litros Vendidos. Esto produce que la variable
se actualice con el valor que se escribe en cada fila del reporte.
3. Agregar columna a la derecha de la tabla actual e insertar un objeto Data en el detail de la tabla (fila de detalle). Este se define como:
Display Name
Variacion
Data Type
Integer
Expression
if(myvar==0){
0;
}else{
(BirtMath.subtract(dataSetRow["Measures_Litros Vendidos"], myvar)/myvar)*100
}
Esta expresión devuelve 0 si el valor de la variable es 0 (por ejemplo en la fila 1 del reporte). Si no es 0, entonces se efectúa el cálculo de la
variación %: se resta a la medida Litros Vendidos el valor de la variable (que aún contiene el valor de la fila anterior para la medida Litros
Vendidos), se divide entre el valor de la variable y se multiplica por 100.
4. Ejecutar el reporte. Resultado:
HowTo efectuar cálculos con valores de distintas tablas
Contexto
Efectuar cáclulos con elementos de diferentes tablas. Las tablas por definición permiten iterar entre elementos de un dataset, aunque también
pueden definirse para otro uso, sin asociarlas a ningún dataset.
Cuando una tabla está asociada a un dataset éste es único. Una tabla no puede asociarse a más de un dataset al mismo tiempo. Cuando se
requiere la operación entre elementos (valores) de tablas independientes una primera alternativa puede ser la definición de un joint dataset que
permita tener en un único dataset y por lo tanto tabla, todos los valores que se requieren para operar.
Si esto no es posible, se tiene una segunda alternativa que es el uso de variables en el reporte.
Ejemplo
Suma de subtotales de dos tablas independientes, a desplegarse en una tercera tabla.
Se tienen dos tablas con 2 columnas cada una: fecha y valor. Se quiere sumar el total de la primera con el total de la segunda tabla y mostrarlo
en una tercera tabla.
El uso de variables supone la definición e inicialización de las mismas, y luego calcular su suma en una tabla separada.
Los pasos necesarios son:
1.
2.
3.
4.
Definir datasource del tipo necesario según el tipo de fuente de datos (O3 view, mdx, etc.).
Definir datasets correspondientes a las 2 primeras tablas, de las cuales se extraerá su total (Tabla1 y Tabla2).
Agregar las tablas al layout del reporte.
Agregar un elemento aggregation en la footer row de cada tabla, de forma de obtener los subtotales. Si se quiere, es posible ocultarlos
con la propiedad visibility en hide.
5. Seleccionar cada aggregation en cada tabla (de a uno por vez) y en la solapa script (a la derecha de Layout y Master Page), seleccionar
en el combo script el método onCreate. Allí escribir lo siguiente:
Para aggregation de Tabla1
//inicializa variable subtotal1 y le asigna el valor del elemento aggregation:
var subtotal1=this.getValue();
// define variable global subtot1 y le asigna el valor de la variable subtotal1.
reportContext.setPersistentGlobalVariable("subtot1", subtotal1);
Para aggregation de Tabla2
var subtotal2=this.getValue();
reportContext.setPersistentGlobalVariable("subtot2", subtotal2);
Con esto se está seteando 2 variables globales, de forma que queden disponibles para ser utilizadas desde cualquier otro elemento del
reporte.
6. Crear nueva tabla de 2 columnas, sin asociarle ningún dataset, esta es la Tabla3.
En la segunda celda de la detail row agregar un elemento text y en el onCreate de éste se escribe lo siguiente:
this.text = parseInt(reportContext.getPersistentGlobalVariable("subtot1")) +
parseInt(reportContext.getPersistentGlobalVariable("subtot2"));
Con esto se está convirtiendo a entero el valor de cada variable (puesto que inicialmente quedaron definidas como string),
sumandolas entre si, y escribiendo la suma en el elemento text. Tener presente de acuerdo a los valores utilizados, que el parseInt
puede ser insuficiente (usar parseFloat).
Observaciones:
En este ejemplo se optó por mostrar la suma final en un elemento text en una celda de una tabla (Tabla3). Perfectamente se puede
mostrar directamente en un campo text ubicado en el layout del reporte.
HowTo Modificar configuración para que el Report corra en 32bits
Cambiar configuración
en IdeaSoft->O3->bat editar el archivo Reporting.bat y dentro del archivo cambiar %JAVA HOME% por "C:\IdeaSOft\O3\jrex32"
HowTo ordenar fechas en reporte con numero variable de columnas
Contexto
Se define un reporte con número variable de columnas, para el cual se utiliza una fecha relativa por ejemplo "Últimos 12 meses".
Al visualizar el reporte la fecha muestra sus meses desordenadas cronológicamente, por ejemplo: 08 / 2004, 09 / 2004, 10 / 2003, 11 / 2003.
Proceso
Para lograr el orden correcto de las fechas se debe:
1. Editar el dataset , agregando una columna procesada de tipo fecha con la siguiente expresión:
BirtStr.right(row["Fecha"], 4)
donde row["Fecha"] es la fila con los datos de la fecha en formato String. La idea es extraer el valor año de los datos.
2. Definir un nuevo grupo en Data Cube y agregar la nueva columna.
3. Luego arrastramos el elemento (orden) en el reporte, para la celda superior derecha (número de columnas variables).
4. Marcar el elemento agregado como oculto para que no se visualice en el reporte.
5. Luego en las propiedades de cross tab nos dirigimos a la pestaña ordenar y agregamos la columna anteriormente definida.
5.
Una vez concluido el proceso, nuestro reporte se debería visualizar de está manera:
Las fechas se muestran correctamente ordenadas y se continuaran ordenando dinámicamente a medida que se vayan agregando nuevas
columnas.
HowTo Parametrizar un Conjunto de Datos de tipo XML (Data Set XML)
Parametrizando Data Set XML
El uso de parámetros asociados a las fuentes de datos XML está soportado por BIRT versión 2.5. Por el momento la
distribución de O3 opera con una versión anterior de BIRT, por lo que es necesario bajar la versión BIRT 2.5 si se desean
utilizar parámetros asociados a las fuentes XML
Cómo definir un parámetro para un conjunto de datos XML
1. Agregar una Fuente de Datos XML
2. Agregar un Conjunto de Datos XML (Seleccionadno la opción de usar la fuente XML definida en la fuente de datos)
3.
3. En Row Mapping, seleccionar el Xpath Expression(Es la expresión que mapea las filas y columnas de la tabla. Es la dirección dentro del
XML de lo que se quiere mostrar).
4. En Columns Mapping, Seleccionar las columnas que se quieren visualizar, de la tabla previamente seleccionada en Row Mapping
5. Por último, una vez definidos los pasos anteriores, pasamos a definir el parámetro para el conjunto de datos XML. Vamos a la parte de
parámetros(ya deberíamos tenr un parámetro definido, sino, definirlo antes de hacer este paso), le ponemos un nombre al parámetro, y
elegimos a que parámetro va a estar asociado. Luego, ir a Row Mapping, ver que es lo que queremos filtrar, si es el nodo padre para
obtener todos los hijos, o si queremos obtener un hijo en especial. Nos paramos en el Xpath en donde queremos filtrar y luego del
nombre del nodo escribir lo siguiente, por ejemplo .../book[@category = "{?param?}"/... . En el caso que se quiera hacer un filtro estático
el cambio sería .../book[@category = "WEB"/...
Ejemplos para entender Xpath
Supongamos que tenemos el siguiente archivo XML
<?xml version="1.0"?>
<library>
<book category="COOKING">
<title lang="en">Everyday Italian</title>
<author name=”Giada De Laurentiis” country=”it”/>
<year>2005</year>
</book>
<book category="CHILDREN">
<title lang=”en”>Harry Potter</title>
<author name=”J K. Rowling” country=”uk” />
<year>2005</year>
</book>
<book category="WEB">
<title lang="en">XQuery Kick Start</title>
<author name=”James McGovern” country=”us” />
<author name=”Per Bothner” country=”us” />
</book>
<book category="WEB">
<title lang="en">Learning XML</title>
<author name=”Erik T. Ray” country=”us” />
<year>2003</year>
</book>
<audio format=”CD” category=”MUSIC”>
<title lang=”en”>Feels Like Home</title>
<artist name=”Norah Jones” country=”us” />
<year>2005</year>
</audio>
</library>
Tabla Xpath
/library/book
Columna
Nombre
Xpath
Tipo de Dato
1
Category
@Category
String
2
Title
title[@lang = "en"]
String
3
Year
year
int
4
Author_1
author[ 1 ]/@name
String
5
Author_2
author[ 2 ]/@name
String
En este ejemplo, la tabla de la expresión Xpath muestra todos los nodos "book", en este caso son 4. Cada uno de estos elementos esta
mapeado en la tabla resultado. Las 5 columnas que salen de la tabla son evaluadas para cada nodo "book".
El resultado de la tabla sería el siguiente:
Category
Title
Year
Author_1
Author_2
Cooking
Every day Italian
2005
Giada De Laurentiis
NULL
Children
Harry Potter
2005
J K. Rowling
NULL
Web
XQuery Kick Start
NULL
James McGovern
Per Bothner
Web
Learning XML
2003
Erik T. Ray
NULL
Ejemplo de parametrización XML
HowTo utilizar links en un reporte
BIRT permite agregar enlaces en reportes, de forma de hacerlos más interactivos. Estos enlaces pueden ser entre dos secciones de un reporte,
desde un reporte hacia determinada sección de otro, o hacia contenido externo.
Este how to explica cómo definir un enlace o link hacia contenido externo, por ejemplo un sitio web, haciendo referencia a su URI (Uniform
Resource Identifier).
Al definir enlaces, el elemento que actúa como link se conoce como elemento origen. Estos deben ser de tipo data, label, image o chart.
El elemento hacia el que se define el enlace se conoce como elemento destino. En el ejemplo que se presenta a continuación el destino es un
sitio web.
1. Insertar en el layout del reporte el elemento origen, en este caso de tipo label. Escribir el texto que se desee para el enlace (texto visible
en el reporte).
2.
2. En el panel de propiedades del mismo, seleccionar la propiedad Hyperlink y presionar opciones, donde se tiene:
En Select Hyperlink Type seleccionar URI.
En Location escribir el enlace entre comillas, por ejemplo: "http://www.ideasoft.biz". Este será el elemento destino.
Elegir el tipo de target, en este caso Blank pues se requiere abrir el sitio en una nueva solapa o ventana del navegador web que
se está utilizando.
De forma opcional, se puede escribir un tool tip para el enlace.
3. Guardar el reporte y exportarlo hacia el servidor si es necesario.
Este es el uso más simple de link desde un elemento de un reporte. Existe otra forma de uso más interesante que es cuando en una tabla del
reporte se deben escribir enlaces en cada fila o row, que dirigen hacia sitios o páginas html, diferentes para cada elemento.
Utilizando el ReporteVentas distribuido como ejemplo con la instalación de O3, se pretende insertar un enlace por cada vendedor, que dirija
hacia un sitio web particular de ese vendedor. Esto implica que en la fuente de datos utilizada para definir esta tabla, se tenga una URI para cada
vendedor. Con esto el dato del link será parte del dataset utilizado para la tabla, y se podrá utilizar en cualquier parte de la misma.
Los pasos a seguir son similares a los del primer ejemplo:
1. En la fila de encabezado del grupo de la tabla (table group - header) se inserta un elemento label. Se escribe el texto "Link" (sin comillas).
2. En el panel de propiedades de este elemento label se selecciona la propiedad Hyperlink. Luego en las opciones se selecciona tipo URI
nuevamente. En este punto, en vez de escribir el destino del enlace, se deberá seleccionar desde el data set, en el editor de expresiones (botón
fx):
De esta forma, el texto del enlace será igual para todos los vendedores, pero el destino será específico de cada vendedor.
3. Guardar el reporte y exportarlo hacia el servidor si es necesario.
O3 Report - Ubicación de drivers
Para diseñar y ejecutar reportes con JDBC Data Sources (base de datos) es necesario disponer del driver correspondiente tanto en el puesto de
desarrollo del reporte como en el servidor donde se corre el mismo. Por tal motivo los drivers deben instalarse en las siguientes ubicaciones:
Para diseñar el reporte:
<O3>/o3.rcp/plugins/org.eclipse.birt.report.data.oda.jdbc_2.3.0.v20080610/drivers
Para ejecutar el reporte:
<O3>/jboss/server/default/deploy/o3report.war/WEB-INF/platform/plugins/org.eclipse.birt.report.data.oda.jdbc_2.3
Tener presente en la carpeta /org.eclipse.birt.report.data.oda.jdbc_2.3.0.v20080610 que el contenido alfanumérico a
continuación de .jdbc_ puede variar en las disintas versiones de O3PS
How To O3 Rules
Ayudas y explicaciones de cómo realizar operaciones con el componente O3Rules
HowTo formato de mail enviado por regla simple
HowTo Imprimiento la tabla con los mismos colores mostrados en pantalla
HowTo formato de mail enviado por regla simple
El siguiente código genera el contenido HTML del mail de notificación de una regla de O3,
conteniendo:
1. Nombre de regla
2. Nombre de cubo
3. Grilla con los datos de la vista coloreada según los valores que no verifican la regla. La grilla
se presenta con el mismo estilo con el que se despliega en el cliente web (o3portal)
Su definición debe estar contenida en el cuerpo del mail enviado por la regla. Esto se hace editando la
acción de mail deseada, y modificando el contenido de la opción "envío de mail"
Contenido de mail de notificación de regla
<html><head>
$attachments.addJPGAttachments('cubeImages')
<style> $cubeCSS </style>
</head>
<body align='center'>
<h1>Rule Notification</h1>
<h3>Rule: $ruleName</h3>
<h3>Cube: $cubeName</h3>
<br>
#foreach ($html in $cubeHtmls)
$html
<br>
#end
<hr>
#set ($count = 0)
#foreach ($image in $cubeImages)
<img src='cid:cubeImages[$count]'/>
<br>
#set($count = $count + 1)
#end
<hr>
<!-$evaluationMessages
-->
</body>
</html>
HowTo Imprimiento la tabla con los mismos colores mostrados en pantalla
Impresión de la Tabla en O3 Portal
Esta sección explica como configurar los browsers soportados por Ideasoft O3 Portal, para que los reportes enviados a impresora desde los
mismos incluyan las imágenes y colores de fondo.
Esto aplica principalmente para la impresión de la grilla.
La configuración depende del browser. A continuación se detallan los procedimientos para cada uno de los browsers soportados (Internet
Explorer, Firefox, Safari) . Configure el que aplica para su caso.
Internet Explorer
Menú:
Herramientas -> Opciones de Internet -> Opciones Avanzadas
Bajo la categoría "Impresión", seleccionar la opción "Imprimir colores e imágenes de fondo".
Firefox
Menú:
Archivo -> Imprimir
En la solapa de Opciones, seleccionar la opción "Imprimir colores de fondo", "Imprimir imágenes de fondo".
Impresión de la grilla en mail de reglas
La impresión de reglas ha sido probada en los siguientes clientes de correo:
Mozilla Thunderbird 2.0
Microsoft Outlook Express 6.0
En dichos clientes es necesario especificar por configuración si se imprimen on no los colores e imágenes de fondo. Configure el cliente que
aplica en su caso.
Mozilla Thunderbird
Menú:
Archivo -> Imprimir
En la solapa de Opciones, seleccionar la opción "Imprimir colores de fondo", "Imprimir imágenes de fondo".
Microsoft Outlook Express 6.0
La configuración se hace en Internet Explorer. En una ventana del mismo, realizar las siguientes acciones:
Menú:
Herramientas -> Opciones de Internet -> Opciones Avanzadas
Bajo la categoría "Impresión", seleccionar la opción "Imprimir colores e imágenes de fondo".
How To O3 Scorecard
Ayudas y explicaciones de cómo realizar operaciones con el componente O3Scorecard
Ayudas en scorecard web
HowTo Formatear números en los tableros
Reconstruir un Scorecard desde la linea de comandos
Ayudas en scorecard web
Cómo agregar un link de ayuda para cada indicador del scorecard
La solución consisten en que para cada indicador aparecerá un link de "Ayuda". Al presionarlo se abrirá una nueva ventana conteniendo un
documento con la ayuda.
El documento puede estar en cualquier formato que el navegador pueda mostrar (html, doc, pdf, etc). debe además se ubicado en:
dentro de la aplicacion web, o sea, dentro de tomcat/webapps/scorecard.
la ubicación dentro del sitio web donde se encuentra el documento se formará de la siguiente
forma:
tomcat/webapps/scorecard/ base / nombre_tablero / nombre_documento
base: sera configurable a nivel de la aplicacion web (archivo
tomcat/webapps/scorecard/web-inf/webapp.properties)
nombre_tablero:
es el nombre del tablero
nombre_documento: refiere al nombre del tablero y se especificara con el editor de scorecard como un
dato mas del indicador, en la solapa General.
El link de ayuda aparecera solo si se especifico el nombre del documento en el campo "documento de ayuda" del tablero con el editor.
Un ejemplo del lugar donde queda el doc es :
tomcat/webapps/scorecard/ayudas/Administracion y Finanzas/ayuda_indicador_Distributed_Energy.doc
HowTo Formatear números en los tableros
Formato de números
El formato se utiliza para indicar como queremos ver el número, cuantos dígitos decimales y si queremos agruparlos.
La siguiente es una tabla para indicar como se especifica el formato
Símbolo
Significado
0
Dígito
#
Dígito, se muestra cero si no hay un dígito
.
Separador decimal
-
Signo de menos
,
Separador para agrupar
E
Separa mantisa y exponente en notación científica
Número
Formato
(outputMask=)
Configuración Regional
(outputMaskLocale=)
Resultado
0.00
"0.00"
"en"
0.00
0.00
"0.00"
"es"
0,00
0.0
"0.0"
"es"
0.0
0.0
"0.0"
"es"
0,0
1000
",###"
"en"
1,000
1000
",###"
"es"
1.000
1000
",###.0"
"en"
1,000.0
1000
",###.0"
"es"
1.000,0
76.5
",###.0'%'"
"en"
76.5%
76.5%
",###.0'%'"
"es"
76,5%
Configuración Regional
La configuración regional es la forma para indicar qué símbolos utilizar en el número al cual se le aplicó el formato deseado.
Por ejemplo, para el número 1234 si le aplicamos el formato #,###.00 si la configuración regional es español lo veremos como 1.234,00. En
cambio si la configuración es ingles lo veremos como 1,234.00
El valor conel cual lo vamos a configurar es uno de los siguientes:
Valor
Significado
default
se toma la configuración regional del servidor.
user
se toma la configuración regional definida por el cliente (por ejemplo cuando se loguea por la web)
es
español
en
ingles
it
italiano
pt
portugués
Procedimiento
A partir de la versión 5.0.050 existe en la interfaz gráfica la capacidad para indicar el formato y la configuración regional.
Las versiones anteriores a la 5.0.050 solo soportan formato especificandolo de la siguiente manera:
1. Generar el tablero y guardarlo
2. Buscar el archivo de nombre igual al tablero pero que termina .bsDef
3. Abrir el archivo y buscar outputMask="0.0" (este es un atributo asociado a cada indicador, por lo que se deberá reemplazar en todos
aquellos indicadores a los cuales se desee modificar el formato por defecto)
4. Remplazar por el formato deseado (ver tabla abajo de formatos)
5. Guardar el archivo
6. Generar el tablero
Ejemplo 1:
Supongamos que se quiere ver los números de la siguiente forma : 25,506.0
substituir por
outputMask=",###.0 "
La forma de configurar la configuración regional es parecida al del formateo del número:
En la misma linea de outputMask="0.0" tenemos que poner outputMaskLocale="default"
Reconstruir un Scorecard desde la linea de comandos
Procedimiento para reconstruir un Scorecard desde la línea de comados
En el directorio raiz de O3 hay una archivo O3BSCGenerator.properties, este archivo lo tamaremos como ejemplo para construir el nuevo
.properties
el archivo se ve así
# O3 Scorecard Generator configuration File
# CS Properties
gclient.server.port
gclient.server.name
gclient.server.host
gclient.singleSignOn
=
=
=
=
1099
O3Server
localhost
true
# Sample entries for local scorecards
#indicatorsXML = ${ideasoft.home}/files/VentasMundiales/VentasMundiales.bsDef
#resultFileName = ${ideasoft.home}/files/VentasMundiales/VentasMundiales.bsDat
# Sample entries for remote scorecards
indicatorsXML = istore:scorecard/Ventas Mundiales
resultFileName = istore:scorecard/Ventas Mundiales
secFilePath = ${ideasoft.home}/files/VentasMundiales/VentasMundiales_User.properties
como vemos hay 2 partes según querramos construir contra el server o en forma local
Construcción contra el server
modificaremos esta parte
# Sample entries for remote scorecards
indicatorsXML = istore:scorecard/Ventas Mundiales
resultFileName = istore:scorecard/Ventas Mundiales
secFilePath = ${ideasoft.home}/files/VentasMundiales/VentasMundiales_User.properties
Supongamos que el Scorecard que queremos lo guardamos en el server con el nombre XXX
debemos crear un archivo que le pondremos por ej: XXX_user.properties que contendrá los datos del usuario y password, el usuario puede ser
cualquiera que tenga derechos de abrir una definición de scorecard, por lo general se pone el admin
la clave se genera con el builder de la siguiente forma
./builder -encrypt clave_del_user
cuando termine veremos algo del estilo
LS38h9m6jd4=
esa es nuestra clave encriptada que pondremos en el archivo XXX_user.properties la cual deberemos modificar como LS38h9m6jd4\= ya que
hay que escapar el signo de igual
El archivo de datos del usuario
XXX_user.properties se verá así
user = admin
pass = LS38h9m6jd4\=
El archivo de generación del scorecard
el archivo BSC_XXX.properties se verá así:
# O3 Scorecard Generator configuration File
# CS Properties
gclient.server.port
gclient.server.name
gclient.server.host
gclient.singleSignOn
=
=
=
=
1099
O3Server
localhost
true
# Sample entries for remote scorecards
indicatorsXML = istore:scorecard/XXX
resultFileName = istore:scorecard/XXX
secFilePath = path_al archivo/XXX_user.properties
Ejecutar la construcción en línea de comados
./bscgen path_al_archivo/BSC_XXX.properties
Construcción local
modificaremos esta parte
# Sample entries for local scorecards
#indicatorsXML = ${ideasoft.home}/files/VentasMundiales/VentasMundiales.bsDef
#resultFileName = ${ideasoft.home}/files/VentasMundiales/VentasMundiales.bsDat
supongamos que generamos un Scorecard de nombre XXX
el archivo BSC_XXX.properties se verá así
# O3 Scorecard Generator configuration File
# CS Properties
gclient.server.port
gclient.server.name
gclient.server.host
gclient.singleSignOn
=
=
=
=
1099
O3Server
localhost
true
# Sample entries for local scorecards
indicatorsXML = path_al_archivo/XXX.bsDef
resultFileName = path_al_archivo/XXX.bsDat
Ejecutar la construcción en línea de comados
./bscgen path_al_archivo/BSC_XXX.properties
How To O3 GIS
Ayudas y explicaciones de cómo realizar operaciones con el componente O3GIS.
O3 GIS - Cliente Web
O3 GIS - Definir Gradiente
O3 GIS - Funcionamiento y configuración del módulo
O3 GIS - Modificar Nivel de Zoom
O3 GIS - Scorecard
O3 GIS - Shapefiles
O3 GIS - Cliente Web
Se describe cómo configurar O3 GIS para su uso mediante el Cliente Web, es decir, desde cualquier navegador Web.
La ejecución Web del componente GIS requiere un componente adicional llamado GeoServer (componente de código abierto y sin costo), por
razones de licenciamiento este componente no puede ser distribuido junto con O3 y por lo tanto debe ser descargado e instalado de forma
independiente.
En este componente deben declararse los layers del mapa que va a ser utilizados, de forma similar a como se declararon en el archivo XML de
asociación.
Instalación de GeoServer
A continuación se presentan los pasos a seguir para instalar GeoServer:
1. Descargar war de GeoServer
a. Ir al sitio de GeoServer: http://geoserver.org
b. Ir a página de Downloads: http://geoserver.org/display/GEOS/Download
c. Ir a página de All Release: http://geoserver.org/display/GEOS/All+Releases
d. Seleccionar la versión a descargar (Testeada por IdeaSoft: GeoServer 2.0.0a).
e. Seleccionar el link Web Archive de la versión oficial (Stable) de GeoServer.
2. Instalación GeoServer en el directorio jboss/server/default/deploy/gserver/geoserver.war bajo la instalación de O3. Para esto es
recomendable:
a. Detener el servidor de O3 si estaba en ejecución
b. Crear un directorio con nombre geoserver.war bajo jboss/server/default/deploy/gserver
c. Descomprimir el contenido del archivo geoserver-2.0.0a-war.zip en una carpeta temporal, entre los archivos descomprimidos se
incluye geoserver.war.
d. Descomprimir el contenido de geoserver.war en la carpeta jboss/server/default/deploy/gserver/geoserver.war, puede ser
necesario renombrar el archivo geoserver.war a geoserver.zip, para poder utilizar la herramienta de descompresión.
Configuración del mapa en GeoServer
1. Iniciar servidor JBoss de O3
2. Acceder a la url http://<host>:<port>/geoserver donde <host> y <port> corresponden al servidor y puerto de instalación de O3
respectivamente (por ejemplo http://localhost:8080/geoserver).
3. Logearse al sitio, ingresando como usuario/contraseña: admin/geoserver
3.
Administración de usuarios y roles consulte el siguiente enlace:
http://docs.geoserver.org/latest/en/user/security/sec_roles.html
4. Configurar Espacios de Trabajo, Almacén de Datos y Estilos
a. Seleccionar el link Espacios de Trabajo, y luego el link Agregar un nuevo espacio de trabajo: Crear un Espacio de Trabajo con
el Name o3 y URI http://<host>:<port>/o3portal donde <host> y <port> corresponden al servidor y puerto de instalación de O3
respectivamente.
Atención
En caso de que la URI del espacio de nombres sea correcta pero no válida para geoserver, sera necesario
definir el espacio con otra URI, por ejemplo 'http://www.ideasoft.biz' y luego editarla con la URI anteriormente
invalidada.
b. Seleccionar el link Almacenes de Datos, y luego el link Agregar nuevo almacén para configurar los archivos shp (ShapeFiles)
i. Elegir el valor 'Shapefile' en las opciones del campo Feature Data Set Description
ii. Seleccionar en Espacio de trabajo o3
iii. Ingresar el valor countries en el campo Nombre del origen de datos
iv. Ingresar en Parámetros de conexión la url donde está el archivo country.shp (por ej: file:data/worldcities/country.shp
en caso que el archivo country.shp se encuentre ubicado en el directorio data/data/worldcities bajo el war de
iv.
GeoServer). También pueden estar ubicados en otro directorio/carpeta, referenciados en una ubicación absoluta del
filesystem, por ej. file:/Ideasoft/gis/country.shp).
c. Seleccionar el link Capas, y luego el link Agregar nuevo recurso
i. Seleccionar nueva capa, indicando o3:countries en Agregar capa de
ii. Elegir el link de country
iii. Modificar country por countries
iv.
iv. En el campo SRS declarado, Buscar el valor 4326, elegirlo.
v. Elegir el link Calcular desde los datos y luego Calcular desde el encuadre nativo
vi. Pasar a la etiqueta de Publicación y verificar que el Estilo por defecto sea polygon
vii. Hacer click en Guardar
d. Los 7 pasos anteriores fueron necesarios para configurar el shapefile del layer de countries; se deben ejecutar análogamente
para configurar el shapefile del layer de WorldCities:
i. Utilizar worldcities
ii. La ubicación de worldcities.shp
iii.
d.
iii. worldcities como nombre y alias de la capa
e. Para confirmar que los mapas fueron configurados correctamente, lo puede comprobar en la opción de Previsualización de
capas.
Configuración del mapa en O3
Se debe declarar la url interna del servidor para conexión con O3 Portal en el archivo GServer.properties (o custom), en la property
gis.o3portal.url (por defecto el valor es http://localhost:8080/o3portal)
O3 GIS - Definir Gradiente
Contexto
Se utiliza un gradiente de colores para representar los elementos geográficos en el mapa de acuerdo a su valor actual.
Es posible definir múltiples gradientes y personalizar los colores que componen cada uno de los gradientes.
En el mapa se puede desplegar una tabla con información de los rangos numéricos asignados a cada uno de los colores que forman el
gradiente.
Múltiples gradientes
Se pueden definir los colores que participan del gradiente en el XML de mapeo del cubo a los layers del mapa, en este ejemplo se definen dos
gradientes:
<gisMappingDef>
<mainDimension>
. . .
</mainDimension>
<mapDef>
. . .
</mapDef>
<gradients>
<gradient name="Default">
<gradientColor>255, 0, 0</gradientColor>
<gradientColor>255, 102, 0</gradientColor>
<gradientColor>255, 153, 0</gradientColor>
<gradientColor>255, 204, 0</gradientColor>
<gradientColor>255, 255, 0</gradientColor>
<gradientColor>255, 255, 153</gradientColor>
</gradient>
<gradient name="Green">
<gradientColor>204, 255, 204</gradientColor>
<gradientColor>153, 255, 204</gradientColor>
<gradientColor>0, 255, 204</gradientColor>
<gradientColor>0, 204, 204</gradientColor>
<gradientColor>0, 153, 153</gradientColor>
<gradientColor>0, 102, 102</gradientColor>
</gradient>
</gradients>
</gisMappingDef>
Default
Green
Si no se define ningún gradiente en el XML, se utiliza uno por defecto, cuyos colores coinciden con los presentados en el ejemplo anterior con
nombre "Default".
La cantidad de colores en cada gradiente puede variar, sólo se restringe que como mínimo debe tener dos colores.
Utilización
En el ePortal se puede seleccionar, en el editor del portlet de GIS, el gradiente a utilizar cuando se despliegue.
Detalle del gradiente
Se puede desplegar una tabla que muestre los rangos numéricos asignados a cada uno de los colores que forman el gradiente.
Esta tabla se activa con un botón de la toolbar, para el caso del portal se puede seleccionar su visualización por defecto en el editor del portlet de
GIS.
Escala
Se puede activar la visualización de la escala (en kilómetros y millas) actual para el mapa, en el caso de O3Portal la escala se despliega
siempre, en el caso de ePortal, se selecciona en el editor del portlet.
Selección del tipo de visualización inicial
En el portlet se puede seleccionar la visualización inicial entre: Series, Mínimo, Máximo y Gradiente.
O3 GIS - Funcionamiento y configuración del módulo
Se presenta el soporte de GIS introducido en la versión 5.2 de O3, presentando un ejemplo y a continuación detalles sobre el funcionamiento del
módulo y su configuración.
Ejemplo
Este archivo contiene una versión modificada del cubo Demo para integrarse con el módulo GIS.
Para ver el ejemplo seguir los siguientes pasos:
1. Descomprimir el archivo en algún directorio del sistema, por ejemplo /IdeaSoft/gis
2. Si el archivo se descomprime en un directorio diferente, o si la prueba se está realizando en Windows:
Editar el archivo DemoGisMapping.xml
Reemplazar las ocurrencias (2) de /Ideasoft/gis por la ubicación donde quedaron los archivos:
<uri>file:/IdeaSoft/gis/country.shp</uri>
<uri>file:/IdeaSoft/gis/worldcities.shp</uri>
3. Ejecutar el módulo O3 Browser
4. Abrir el cubo DemoGis.cube incluido en el zip mencionado anteriormente.
5. Seleccionar en el menú: Ventana -> Plug-ins -> GIS Plugin
Se despliega una ventana con el mapa del mundo y se habilitan las siguientes características:
Al seleccionar un elemento geográfico en O3 el mapa se centra en dicha ubicación
Si se ubica la dimensión Location en las series, se puede seleccionar que se utilice el color de las series para representar los elementos
geográficos (seleccionar el tercer botón de la barra de herramientas de GIS)
El doble-click en un elemento geográfico del mapa realiza la selección tanto en el mapa como en el cubo.
Cuando la dimensión geográfica (Location en este caso) no está ubicada en las series, sino que está ubicada en el eje X, se puede
seleccionar Max o Min, con esta opción los elementos geográficos toman el color del elemento que le da el mayor (o menor) valor.
Por ejemplo en la siguiente imagen el color de Brasil es rojo porque el tipo de cliente con más ventas es "Medium Accounts" y Canadá
es azul porque la categoría con más ventas es "Minor Accounts".
Ejecución en ambiente Web
La ejecución del componente GIS en los módulos Web de O3: O3Portal y EPortal requiere la instalación de un componente adicional, en esta
página se describen los pasos a seguir para instalar y configurar dicho componente.
Ejecución en O3Portal
Luego de instalado el componente GeoServer y confirmada la correcta configuración de los layers en dicho servidor, seguir estos pasos para
visualizar el cubo en O3Portal:
1. Agregar el cubo DemoGis al servidor de O3, ejecutar el administrador (AdmServer), agregar el cubo y asociar los roles y permisos
correspondientes.
2. Acceder al O3Portal (/o3portal) y abrir dicho cubo
3. Se habilita un botón "Plug-ins" junto a "Opciones", seleccionarlo y luego seleccionar "GIS Plugin"
Se despliega una nueva ventana con el mapa, con las siguientes funcionalidades:
Para acercar o alejar el mapa se puede utilizar la rueda de desplazamiento del mouse (Scroll Wheel) o presionar la tecla Shift mientras
se arrastra el mouse manteniendo el botón izquierdo presionado para determinar la región a acercar.
Para desplazar el mapa se arrastra el mouse manteniendo el botón izquierdo presionado.
El click en un elemento realiza la selección (tanto en el mapa como en el cubo) y despliega la información asociada a dicho elemento
(esta información es provista por el mapa).
La selección de un elemento geográfico en la vista de O3 determina la selección del elemento en el mapa
Barra de Herramientas de GIS en O3Portal
La barra de herramientas de GIS se compone de 8 botones, tal como se muestra en la siguiente imagen:
La funcionalidad de cada uno de los botones es la siguiente (por orden de izquierda a derecha en la barra de herramientas):
Color de Series
Si se ubica la dimensión geográfica en las series, al activar este botón se utilizan los colores de las series para representar los elementos
geográficos en el mapa.
Gradiente
Si se ubica la dimensión geográfica en las series, al activar este botón se utiliza un gradiente de colores de amarillo a rojo para representar los
elementos geográficos en el mapa de acuerdo a su valor actual.
Mínimos/Máximos
Cuando la dimensión geográfica no está ubicada en las series, sino que está ubicada en el eje X, en caso de seleccionar los botones de Mínimos
o Máximos, los elementos geográficos toman el color del elemento que le da el menor o el mayor valor respectivamente.
Tabla de Información
Si se selecciona un elemento geográfico mediante un click estando este botón activado, se despliega una tabla con la información disponible del
elemento geográfico en el mapa. La tabla puede ocultarse mediante un nuevo click que desactive el botón. Cuando el botón está activado se
deshabilita la selección del elemento geográfico en el cubo.
Caja de Selección Múltiple
Al activar este botón, se puede crear una caja para seleccionar los elementos geográficos contenidos dentro de dicha región. En el caso de
elementos geográficos en forma de polígonos, se seleccionan todos los elementos que intersecten con la caja dibujada.
La caja de selección múltiple se dibuja desplazando el mouse con el botón izquierdo presionado hasta liberar el botón. Una vez dibujada una
región, es posible seleccionar otra sin perder la anterior aplicando el mismo procedimiento pero manteniendo presionado la tecla Ctrl.
Aplicar Selección
Al presionar este botón se realiza la selección (tanto en el mapa como en el cubo) de los elementos geográficos marcados.
Cancelar Selección
Al presionar este botón se deseleccionan (tanto en el mapa como en el cubo) los elementos geográficos marcados.
Notas
La barra de herramientas con funcionalidad completa es compatible con los navegadores Internet Explorer 8 (con y sin vista de compatibilidad), y
Mozilla Firefox 3.x. No se soportan las funcionalidades de selección múltiple en las versiones de Internet Explorer 6 y 7.
Ejecución en EPortal
El módulo GIS ofrece un portlet para la visualización de un mapa, el portlet permite la selección del cubo (o vista) a desplegar, de forma similar al
portlet estándar de vista de O3, la restricción que se aplica es que el cubo seleccionado debe tener configurado el GIS, como es el caso del cubo
DemoGis que se está usando de ejemplo.
Para utilizar este portlet con el cubo DemoGis seguir los siguientes pasos:
1. Se asume que ya se realizaron los pasos para la visualización en O3 Portal, de lo contrario agregar el cubo DemoGis al servidor como
se describe en ese punto.
2. Ingresar a EPortal (/eportal) con el usuario admin
3. Seleccionar la comunidad en la que se desea trabajar, por ejemplo: Mis Espacios Web / Default / Páginas Privadas
4. Agregar una nueva página llamada GIS, esto no es necesario pero facilita la visualización del ejemplo:
5. Agregar el portlet de GIS en la nueva página:
Seleccionar "Añadir Portlet" en el meu del portal
Seleccionar "O3 GIS Portlet" de la categoría "IdeaSoft O3"
6. Editar la configuración del portlet
7. Seleccionar el cubo DemoGis
Se despliega el mapa del mundo, dado que los países no están en las series no se asignan colores a cada uno de los elementos geográficos.
Para esto se puede generar la vista deseada en el O3Portal y seleccionarla en el Portlet.
El portlet de GIS es compatible con el portlet de control, por lo tanto se puede agregar un portlet de control asociado a la dimensión geográfica
(siguiendo las mismas instrucciones que para las vistas estándar), de esta manera al seleccionar un elemento geográfico en el portlet de control
el mapa se centra en dicho elemento.
Barra de Herramientas de GIS en EPortal
La barra de herramientas de GIS en EPortal es la misma descripta para O3Portal, sin las funcionalidades de selección múltiple.
Conceptos Básicos
El componente GIS se basa en la realización de una asociación entre una dimensión de un cubo y un mapa (expresado como un conjunto de
capas o "layers").
La asociación se realiza especificando para cada nivel de la dimensión:
El layer del mapa asociado al nivel
El atributo del mapa que se utiliza para realizar la asociación con el nivel del cubo
El atributo del nivel de la dimensión (clave, etiqueta, etc.) que se asocia con el atributo del layer.
Esta asociación se expresa actualmente en un archivo XML, el formato de dicho XML se presenta con un ejemplo:
En este ejemplo se declara (bajo el elemento mainDimension) que la dimensión Location tiene dos niveles: Country y City, a su vez cada uno de
estos niveles está asociado a un layer del mapa:
Country con o3:countries** La asociación se realiza entre la etiqueta de la dimensión y el atributo CNTRY_NAME del layer
City con o3:worldcities** La asociación se realiza entre la etiqueta de la dimensión y el atributo NAME del layer
El atributo parentLayerAttributeName especifica que en el layer de las ciudades, el nombre del país se encuentra en el atributo
CNTRY_NAME. Este atributo se utiliza al seleccionar un país, para dejar sólo visible las ciudades de ese país.
Bajo el elemento mapDef/layers se especifican los layers que definen el mapa, el nombre especificado en cada uno de los layers debe coincidir
con los nombres especificados en la asociación con el nivel de la dimensión. Para el nombre de cada layer debe utilizarse la sintaxis
namespace:nombre_de_layer.
El elemento uri especifica la ubicación del archivo shp que especifica el layer.
El nodo maxExtent especifica, las coordenadas provistas en la configuración de la capa en GeoServer utilizadas en el entorno web (Encuadre
Lat/Lon).
En oportunidades de trabajar en MS Windows donde además los nombres de las dimensiones geográficas poseen caracteres
especiales, puede suceder que no se reconozca correctamente la referencia. En dicho caso, corresponde sustituir dichos
caracteres en el nombre de la dimensión en el XML anterior, por los caracteres interpretados por Java. Por ejemplo, los
caracteres:
á
é
í
ó
ú
se sutituyen por:
á
é
Ãó
ú
A los valores que provee Geoserver, se le deben quitar las comas y reemplazarlas por puntos, por ejemplo, 83,624 se debe configurar como
83.624
Asociación de un mapa a un cubo
Especificación del plugin para el cubo
El módulo de GIS está basado en el soporte de plugins en O3, es por ello que para poder asociar un mapa al cubo se debe especificar un
archivo de definición de plugins.
Supongamos que tenemos un cubo con nombre DemoGis.cube que tiene una dimensión geográfica Location (con las características
presentadas en el XML anterior), en este caso se debe escribir un archivo de texto con nombre DemoGis.plugins (el archivo debe estar ubicado
en el mismo directorio donde está el cubo, el nombre debe ser igual al nombre del cubo pero con extensión .plugins), con el siguiente contenido:
En este archivo debe modificarse el valor del atributo mapping (en el ejemplo DemoGisMapping.xml) al nombre del archivo XML con la
especificación de la asociación, este archivo también debe ubicarse en el mismo directorio donde se encuentra el archivo .cube.
Especificación del archivo de asociación
Como se describió previamente, la asociación de los layers del mapa a los niveles de la dimensión se realiza en un archivo XML, este archivo
debe estar ubicado en el mismo directorio que el cubo y su nombre se especifica en el archivo .plugins.
O3 GIS - Modificar Nivel de Zoom
Contexto
El módulo O3 GIS viene configurado con un nivel de zoom por default para visualizar los mapas. La idea es poder modificar este nivel para mejor
la apariencia.
Definir un nuevo nivel
Para definir un nuevo nivel, se debe modificar el archivo gisPlugin.jsp. Este archivo se encuentra en dos ubicaciones dentro de la instalación de
O3:
<instal-O3>/jboss/server/default/deploy/gserver/0o3.ear/o3portal.war/jsp/gis/
Si se desea modificar el nivel de visualización del mapa en el Portal.
<instal-O3>/jboss/server/default/deploy/gserver/0o3.ear/o3portal.war/portlet-servlets/
Si se desea modificar el nivel de visualización del mapa en O3 GIS Portlet de EPortal.
Para ello se utiliza el método zoomTo(nivel) del objeto map, siendo nivel un número, por ejemplo map.zoomTo(5);
Se debe agregar dentro de function unit() el método zoomTo() debajo de la línea:
map.zoomToExtent(new OpenLayers.Bounds.fromString(<%="\"" + bounds + "\""%>));
Antes del cambio:
function init() {
...
if (bounds != null) {
%>
map.zoomToExtent(new OpenLayers.Bounds.fromString(<%="\"" + bounds + "\""%>));
<%
}
...
}
Luego de agregar map.zoomTo:
function init() {
...
if (bounds != null) {
%>
map.zoomToExtent(new OpenLayers.Bounds.fromString(<%="\"" + bounds + "\""%>));
map.zoomTo(7);
<%
}
...
}
Escalas
Nivel
km
mi
map.zoomTo(5)
200
200
map.zoomTo(6)
100
100
map.zoomTo(7)
100
50
map.zoomTo(8)
50
20
map.zoomTo(9)
20
10
O3 GIS - Scorecard
Se presenta mediante un ejemplo la integración de los componentes O3GIS & O3Scorecard. El objetivo del ejemplo es colorear el mapa de
acuerdo al resultado de un determinado indicador, según su estado rojo, amarillo, verde o azul.
Para facilitar su descripción se trabajará con un Ejemplo basado en el tablero de Ventas Mundiales disponible con la distribución de O3.
Componentes de la solución
1. Tablero con la definición de los indicadores.
2. Modelo de análisis del resultado de los indicadores.
3. Mapa integrado al tablero.
1. Tablero con la definición de los indicadores
Cualquier tablero desarrollado con O3 Scorecard puede ser utilizado de forma integrada a O3GIS para visualizar el resultado de sus indicadores
según un mapa.
El tablero se define de la forma habitual, sin consideraciones especiales salvo las siguientes:
1. Los indicadores que se desean visualizar en el mapa, debe estar detallados por una dimensión que presente elementos geográficos.
2. Para facilitar el desarrollo del modelo de análisis de resultados del indicador, se recomienda que todos aquellos indicadores que se
deseen visualizar en el mapa, tenga la misma definición en cuanto a se definen con filtro (solapa Método asociada al indicador en la
definición del tablero).
2. Modelo de análisis del resultado de los indicadores
Se adjunta modelo para el ejemplo del tablero de Ventas Mundiales y fuente utilizada para definir los colores de acuerdo al estado de los
indicadores.
El modelo tiene por objetivo permitir la visualización en un mapa del estado de los indicadores. Se entiende que los indicadores son detallados
por algún concepto geográfico. En el ejemplo de Ventas Mundiales, los indicadores se detallan por países. Es necesario desarrollar un modelo
de análisis de resultados para cada tablero que se desee integrar a O3GIS.
Medidas
Valor: es el valor utilizado para medir el indicador, que es comparado contra la meta y tolerancia definidos.
Dimensiones
Indicador: contiene como elementos cada uno de los indicadores del tablero.
Detalle: refiere al concepto por el cual se detalla cada indicador. Para que sea relevante en la integración con O3GIS, debe corresponder
a un concepto geográfico.
Filtro: refiere al filtro utilizado en la definición del indicador. Por lo general corresponde a elementos de la dimensión fecha
Estado: valores posibles: rojo, amarillo, verde, azul
Fuentes de datos
El modelo utiliza las siguientes fuentes de datos:
1. resultado de la generación del tablero, de formato XML. Se adjunta modelo definido para el ejemplo de Ventas Mundiales
2. fuente de definición de colores para la dimensión estado. Se adjunta archivo de definicion
Por más detalles en la utilización de fuentes XML como origen de la información al modelo puede consultar el siguiente link: Fuentes de datos
XML
Definición de la fuente que recoge el resultado del tablero
Se asume que quién realiza estos pasos tienen conocimientos suficientes en el diseño de modelos multidimensionales con Ideasoft O3.
Para definir el modelo de resultados del tablero se deben seguir los siguientes pasos:
1. Agregar una fuente de datos de formato XML a partir del bsDat correspondiente. Para ello se debe indicar la ubicación de dicho archivo
en la solapa General.
2. Especificar el camino a partir del cual interesa referenciar los datos relevantes del tablero.
Dicho camino se define en la solapa General, y es siempre el mismo. Se define como:
3. Definir los campos de la fuente de datos en la
solapa Campos. La referencia de estos campos es
relativa al camino seleccionado en paso anterior. A
modo de ejemplo: el valor correspondiente al
indicador se encuentran en el nivel indicado por el
camino. Sin embargo, el campo que refiere al filtro
(key2), se encuentra un nivel atras, mientras que el
campo que refiere al nombre del indicador se encuentra 3 niveles atrás, en la agrupación del xml correspondiente. Se debe observar
además que todos estas referencias son atributos, salvo el valor. Los atributos deben ser referenciados con el símbolo @ como prefijo.
Se presenta a continuación la lista completa de campos requerida para la definición del modelo. Es importante notar que siempre es la
misma:
Vista para presentar coloreado de los indicadores en el mapa.
Para poder visualizar el color del indicador en el mapa, se debe seleccionar una vista del modelo de análisis de resultados del tablero que tenga
las características que se detallan y se presentan en la siguiente imagen.
1. si es en forma de gráfico de barras, por ejemplo, la dimensión que contiene elementos geográficos debe estar en el eje X, mientras que
la dimensión que contiene el estado del indicador debe estar en el eje de las Series.
2. Se debe filtrar el indicador deseado (en la dimensión Indicador).
3. Se debe filtrar el elemento deseado de la dimensión Filtro, que corresponde al filtro definido asociado al indicador y que en general
refiere a una fecha
La siguiente imagen presenta un ejemplo tomado del cubo generado para el tablero de Ventas Mundiales.
3. Mapa integrado al tablero
Para visualizar el estado de un indicador en un mapa, es necesario haber configurado en el componente O3GIS, la asociación entre el mapa y el
cubo que resume el resultado del tablero, indicado en el paso anterior.
Los pasos necesario para la configuración del mapa se detallan en el siguiente link: Definiciones en O3GIS
O3 GIS - Shapefiles
Contexto
El formato ESRI Shapefile (SHP) es un en formato estándar vectorial de almacenamiento digital donde se guarda la localización de los
elementos geográficos y los atributos asociados a ellos. Se utiliza para el intercambio de información geográfica entre Sistemas de Información
Geográfica (GIS).
Shapefiles
Un shapefile es generado por varios archivos. El número mínimo requerido es de tres y tienen las siguientes extensiones:
.shp - es el archivo que almacena las entidades geométricas de los objetos.
.shx - es el archivo que almacena el índice de las entidades geométricas.
.dbf - es el archivo que almacena la información de los atributos de los objetos.
Los shapefiles se pueden descargar gratuitamente desde varios sitios, por ejemplo:
http://www.diva-gis.org/gData
http://www.gadm.org/country
http://www.vdstech.com/map_data.htm
http://www.mapcruzin.com/download-free-arcgis-shapefiles.htm
http://www.mapasymapas.com.ar/descargar-shapefile.php
http://intgis.montevideo.gub.uy
Mapas disponibles para descarga:
Visualización de Mapa
Shapefile
Descripción
Continent
Mapa de continentes con sus etiquetas en inglés.
Countries
Mapa de países con sus etiquetas en inglés.
World
Mapa de países con sus etiquetas en inglés.
No incluye la Antártida.
World Cities
Ciudades mundiales con sus etiquetas en inglés.
Continentes
Mapa de continentes con sus etiquetas en español.
Países
Mapa de países con sus etiquetas en español.
Uruguay
Mapa de Uruguay con división departamental.
Localidades
Localidades de Uruguay.
Info
Para editar el contenido de las etiquetas asociadas con los datos del cubo, se abre el archivo .dbf con Open Office o Excel y se
modifica la columna correspondiente.
How To O3 Portal
Ayudas y explicaciones de cómo realizar operaciones con el componente O3Portal.
Cómo modificar la Lista de Componentes del O3Portal
Customización de O3 Portal
HowTo Conectarse al O3webportal mediante ssl (https)
HowTo Conectarse al portal mediante ssl (https) O3 anteriores a 5.0.050
HowTo definir reglas con fechas relativas
HowTo eliminar al modo edición en al portal
HowTo Utilizando Build Now!
Login anónimo en O3 Portal
Múltiples O3 Web con distinto L&F
Personalización de los Bookmarks del Portal
Personalización gráfica del portal 4.3
Personalización gráfica del portal 5
Cómo modificar la Lista de Componentes del O3Portal
Objetivo
Dentro de las posibilidades de customización del O3Portal, está la de modificar la lista de componentes a acceder desde el O3Portal.
Procedimiento
1. Editar el archivo <O3>\jboss\server\default\deploy\gserver\0o3.ear\o3portal.war\bookmarksPage.jsp
2. Analizando el archivo vamos a observar que se declaran secciones para cada uno de los componentes, por ejemplo para los Escritorios:
<!-- Desktops -->
3. Comentar las secciones de los componentes que no deseamos se visualicen, interponiendo en la sección, el tag <%-- ... --%>.
4. Guardar el archivo
Customización de O3 Portal
El O3 Portal brinda varios mecanismos de customización en cuanto a su Look & Feel.
El más sencillo es mediante la modificación de los estilos (css) utilizados. Esto permite modificar aspectos tales como colores, fuentes, bordes,
etc.
Un paso siguiente puede lograrse utilizando y customizando los tag libraries y el API disponible para reubicar los componentes gráficos en otros
lugares e implementar los propios.
Varios clientes ya han realizado customizaciones a diferentes niveles.
Un ejemplo sencillo lo representa el cambio que realizó Bea (ex Fuego) para presentarle el sito a un prospecto
Otro ejemplo más acabado fue el que realizamos para Eufores donde el sitio se pasó a colores en tonos de verde. Tanto los fondos, bordes,
textos se modificaron pero también los íconos necesarios para dar un acabado similar.
Finalmente el caso de mayor impacto gráfico y customización fue el realizado por Previtec, una empresa brasilera que diseñó el sitio desde cero
para ajustarlo al estándar corporativo de sus páginas. Esta customización hace uso de los taglibs y del API para generar el sitio final.
HowTo Conectarse al O3webportal mediante ssl (https)
Para efectuar este proceso es necesario bajar el servidor JBoss
Procedimiento
Para versiones anteriores a la 5.0.050 hacer clik aquí
1. Ubicar la carpeta <O3>/jboss/server/default/deploy/jboss-web.deployer
2. Editar el archivo server.xml
3. Ubicar la siguiente sección
<!-<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />
-->
4. Descomentar el tag de modo que quede de la siguiente forma:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />
5. Agregar al conector lo siguiente:
5.
emptySessionPath="true"
keystoreFile="${jboss.server.home.dir}/conf/llave_1.keystore"
keystorePass="rmi+ssl"
6. Así debería quedar el Connector:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
emptySessionPath="true"
keystoreFile="${jboss.server.home.dir}/conf/<nombre_llave>.keystore"
keystorePass="rmi+ssl" />
<nombre_llave>.keystore
Es el nombre del archivo de claves
Para generarlo ejecutar en una terminal:
En Windows
%JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA -keystore
<O3>\jboss\server\default\conf\nombre_llave.keystore
En Linux
$JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA -keystore
<O3>/jboss/server/default/conf/nombre_llave.keystore
La primer clave que se solicita debe indicarse rmi+ssl, luego se llenan los datos como corresponda
Para la última clave que se solicita se presionar la tecla ENTER
7. Editar el archivo web.xml del directorio <o3>/jboss/server/default/deploy/gserver/0o3.ear/o3portal.war/WEB-INF
Buscar
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>
<param-value>${request.prefix}/cas/proxyValidate</param-value>
</init-param>
y substituir por:
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>
<param-value>http://localhost:8080/cas/proxyValidate</param-value>
</init-param>
8. Para el caso de usar EPortal, se debe de editar el portal-ext.properties que se encuentra en el siguiente directorio:
<o3>/jboss/server/default/deploy/liferay.war/WEB-INF/classes
Buscar:
cas.login.url=http://${o3.cas.server.host}/cas/login
cas.logout.url=http://${o3.cas.server.host}/cas/logout?service=/eportal
cas.server.name=${o3.cas.server.host}
cas.validate.url=http://${o3.cas.server.host}/cas/proxyValidate
y remplazar por
cas.login.url=https://${o3.cas.server.host}/cas/login
cas.logout.url=https://${o3.cas.server.host}/cas/logout?service=/eportal
cas.server.name=${o3.cas.server.host}
cas.validate.url=http://localhost:8080/cas/proxyValidate
Buscar
o3.cas.server.host=localhost:8080
Remplazar por
o3.cas.server.host=localhost:8443
9. Reiniciar el jboss
HowTo Conectarse al portal mediante ssl (https) O3 anteriores a 5.0.050
1. Ubicar la carpeta <O3>/jboss/server/default/deploy/jbossweb-tomcat55.sar
2. Editar el archivo server.xml
3. Ubicar la siguiente sección
<Connector port="8080" address="$\{jboss.bind.address}"
maxThreads="250" strategy="ms" maxHttpHeaderSize="8192"
emptySessionPath="true"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true"/>
4. Comentar el tag de modo que quede de la siguiente forma:
<\!--
<Connector port="8080" address="$\{jboss.bind.address}"
maxThreads="250" strategy="ms" maxHttpHeaderSize="8192"
emptySessionPath="true"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true"/> \-->
5. Ubicar la siguiente sección
<\!-- <Connector port="8443" address="$\{jboss.bind.address}"
maxThreads="100" strategy="ms" maxHttpHeaderSize="8192"
emptySessionPath="true"
scheme="https" secure="true" clientAuth="false"
keystoreFile="$\{jboss.server.home.dir}/conf/llave_1.keystore"
keystorePass="rmi+ssl" sslProtocol = "TLS" /> \-->
6. Descomentarla de modo que quede de la siguiente forma:
<Connector port="8443" address="$\{jboss.bind.address}"
maxThreads="100" strategy="ms" maxHttpHeaderSize="8192"
emptySessionPath="true"
scheme="https" secure="true" clientAuth="false"
keystoreFile="$\{jboss.server.home.dir}/conf/<nombre_llave>.keystore"
keystorePass="rmi+ssl" sslProtocol = "TLS" />
<nombre_llave>.keystore
Es el nombre del archivo de claves
Para generarlo ejecutar en una terminal:
En Windows
%JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA -keystore
<O3>\jboss\server\default\conf\nombre_llave.keystore
En Linux
$JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA -keystore
<O3>/jboss/server/default/conf/nombre_llave.keystore
La primer clave que se solicita debe indicarse rmi+ssl, luego se llenan los datos como corresponda
Para la última clave que se solicita se presionar la tecla ENTER
7. Agregar en la válvula de CAS (CASSingleSignOnValve) el atributo casValidate, cuyo valor debe ser
"http://<host>:<puerto>/cas/proxyValidate", o sea la uri de cas NO HTTPS.
8. Sustituir <host> y <puerto>, teniendo en cuenta que el puerto es el de HTTP, no el de HTTPS.
9. Reiniciar el jboss
HowTo definir reglas con fechas relativas
Contexto
Se desea crear una regla sobre una vista, en la cuál se tienen dos columnas que contienen una Fecha Relativa (por ejemplo, Mes Actual vs. Mes
Año Anterior). La idea es, definir una expresión en el editor de expresiones sin utilizar la etiqueta de la columna.
Workaround
Se debe utilizar la función [root.leaf(índice)], siendo índice la posición de la columna en la vista comenzando por el valor 0. De está manera se
evita utilizar la etiqueta del elemento y la vista se refresca dinamicamente al cambiar la fecha relativa.
Está solución, se aplica tanto para O3 Portal como para O3 Browser.
HowTo eliminar al modo edición en al portal
Eliminar del portal la posibilidad de editar para un usuario diferente del administrador
Información
No es necesario bajar el jboss para realizar estos cambios
Para hacer esto debemos editar el archivo que se encuentra en:
<03>/jboss/server/default/deploy/gserver/0o3.ear/o3portal.war/bookmarksPage.jsp
en la línea 197 en adelante veremos
<%--c:if test="${csClient.userPrivileges.adm}"--%>
<td style="padding-right:10px;" align="left">
<a href="edit/switch-mode.jsp" class="links" target="_top">
<c:choose>
<c:when test="${editMode}">
<fmt:message key='bookmarksPage.view.command' bundle='${lang}'/>
</c:when>
<c:otherwise>
<fmt:message key='bookmarksPage.edit.command' bundle='${lang}'/>
</c:otherwise>
</c:choose>
</a>
</td>
<%--/c:if--%>
todo lo que debemos de hacer es descomentar de modo que quede así
<c:if test="${csClient.userPrivileges.adm}">
<td style="padding-right:10px;" align="left">
<a href="edit/switch-mode.jsp" class="links" target="_top">
<c:choose>
<c:when test="${editMode}">
<fmt:message key='bookmarksPage.view.command' bundle='${lang}'/>
</c:when>
<c:otherwise>
<fmt:message key='bookmarksPage.edit.command' bundle='${lang}'/>
</c:otherwise>
</c:choose>
</a>
</td>
</c:if>
salvamos el archivo y en el browser actualizamos la página de bookmarks
HowTo Utilizando Build Now!
Contexto
Existen escenarios en los cuales los usuarios necesitan actualizar la información de los datamarts, en lugar de esperar que el proceso de
actualización lo haga en el momento pre-establecido.
La funcionalidad Build Now permite ejecutar desde el cliente web la carga de un datamart a demanda, en el momento que el usuario lo requiere.
Esta funcionalidad está disponible a partir de la versión 5.3
Configuración
La funcionalidad de actualizar los cubos a demanda requiere definiciones que permiten identificar aquellos datamarts que podrán ser
actualizados por los usuarios, así como los usuarios que podrán realizar dicha actualización. Esta configuración debe ser definida por el
administrador de O3, siguiendo las siguientes indicaciones:
1. Se debe crear una carpeta que contenga todos los archivos de configuración para la actualización de los datamarts del servidor
(archivos de extensión .srv). Estos archivos ya debieran existir, si los datamarts publicados en el servidor se actualizan de la manera
apropiada (esto es, a través del comando builder, con el archivo <cubo>.srv como argumento). La nueva carpeta debe contener solo los
.srv correspondientes a los datamarts que se desean actualizar a través de la nueva funcionalidad.
2. Modificar el archivo GServer.properties, que se encuentra en <O3_HOME>/jboss/server/default/ideasoft-o3/, agregando la siguiente
información:
Property
Descripción
Default
o3.buildnow.user
Indica el rol habilitado para solicitar/monitorear
construcciones inmediatas
Administrators
o3.buildnow.srvPath
Ubicación y nombre de la carpeta donde se
localizan los archivos de configuración (srv),
necesarios para lanzar la construcción inmediata
de un datamart
ejemplo:
<O3_HOME>/jboss/server/default/ideasoft-o3/buildnow
GServer.properties de ejemplo
o3.buildnow.user=Administrators
o3.buildnow.srvPath=/opt/IdeaSoft/O3/jboss/server/default/ideasoft-o3/buildnow
Cómo se Ejecuta la actualización ?
1. Ingresar el O3Portal con un usuario comprendido en el rol definido para Build Now! (ej.: Administrators)
2. Ir al enlace Build Now!
3. Hacer click sobre la imagen de la derecha
4. Monitoreo de construcción. El usuario observará el estado de la construcción del datamart en el item Construcciones en Progreso
5. Al finalizar la carga del datamart, el usuario podrá acceder al análisis del mismo.
Login anónimo en O3 Portal
Configurando el O3 Portal para el ingreso anónimo
El O3 portal, a partir de su versión 4.0 incluye la posibilidad de configurarlo para que realice el login en forma anónima.
Esto permite configurar una cuenta de usuario para que realice la autenticación en forma automática sin que el usuario tenga que ingresar
ningún dato.
Para habilitar esta funcionalidad es necesario seguir los siguientes pasos:
1. Bajar el JBoss
2. Editar el archivo context.xml que se encuentra en la ruta <O3>/jboss/server/default/deploy/gserver/0o3.ear/o3portal.war/WEB-INF
con un editor de texto
3. Este archivo contiene una sección similar a la siguiente:
<Context>
<!-- Discomment the GuestUserValve to enable the anonymous login through the anonymous.jsp page
-->
<!--Valve className="com.ideasoft.sso.cas.tomcat.GuestUserValve"
debug="0"
userName="user"
password="user"
filteredPage="/anonymous.jsp"/-->
</Context>
4. Descomentar la sección correspondiente al tag Valve
5. Configurar la cuenta de usuario que se desea utilizar (atributos userName y password de esta válvula)
6. Comentar el CAS para no hacer single sign on
a. Versiones 4.3
i. Abrir el archivo <o3>jboss/server/default/deploy/jbossweb-tomcat55.sar/server.xml
ii. Buscar la parte donde dice
<!-- CAS SSO -->
<Valve className="com.ideasoft.sso.cas.tomcat.CASSingleSignOnValve"
debug="0"
filteredApps="/o3process,/o3portal,/o3planner,/liferay"/>
y cambiar a
<!-- CAS SSO -->
<!-<Valve className="com.ideasoft.sso.cas.tomcat.CASSingleSignO
debug="0"
filteredApps="/o3process,/o3portal,/o3planner,/liferay"/>
-->
nValve"
b. Versiones 5.X
i. Abrir el archivo <o3>/jboss/server/default/deploy/gserver/0o3.ear/o3portal.war/WEB-INF/webapp.properties
ii. Buscar
com.ideasoft.cas.filter.enabled=true
y cambiar por
com.ideasoft.cas.filter.enabled=false
7. Reiniciar el JBoss
8. Probar esta nueva configuración ingresando a la URL siguiente:
http://<server>:8080/o3portal/anonymous.jsp
Configurar el login anónimo para entrar directo a una página predeterminada
Supongamos que queremos entra en forma directa a la vista del cubo demo SalesByLocation, su dirección es
"http://localhost:8080/o3portal/viewdesktop.jsp?cmnd=open&source=Demo%2FSalesByLocation%23_public"
Procedimiento
1. Bajar el Jboss
2. Editar el archivo Context.xml
<Context>
<!-- Discomment the GuestUserValve to enable the anonymous login through the anonymous.jsp page -->
<Valve className="com.ideasoft.sso.cas.tomcat.GuestUserValve"
debug="0"
userName="user"
password="user"
filteredPage="/mi_pagina.jsp"/>
<Valve className="com.ideasoft.sso.cas.tomcat.GuestUserValve"
debug="0"
userName="user"
password="user"
filteredPage="/mi_otra_pagina.jsp"/>
</Context>
Se pueden colocar tantas válvulas como se necesiten
1. Crear las páginas mi_pagina.jsp, mi_otra_página.jsp del siguiente modo en
<O3>/jboss/server/default/deploy/gserver/0o3.ear/o3portal.war
<!-- $Id: anonymous.jsp,v 1.3 2005/09/23 20:05:51 martin Exp $ -->
<%@ include file="/nocache.jspf"%>
<%-- To enable the anonymous login, uncomment de GuestUserValve in the file WEB-INF/context.xml --%>
<%response.sendRedirect(request.getContextPath() +
"/browser/showView.jsp?viewDesktop=true&source=Demo%2FSalesByLocation%23_public");%>
1. Salvar el archivo anterior como mi_pagina.jsp
2. Levantar el Jboss
3. ingresar en el navegador web http://<server>:8080/o3portal/mi_pagina.jsp
Múltiples O3 Web con distinto L&F
Multiples O3 Web con distinto L&F
Objetivo
En algunas circunstancias, es necesario poder ofrecer 2 o más entornos O3 Web, con Look & Feel totalmente diferentes para los distintos
usuarios.
Este HowTo establece los pasos para configurar 2 contextos O3 Web, cada uno con su L&F independiente.
Esto se aplica a los Clientes Web de O3. En el caso de estar utilizando O3 Enterprise Portal, es posible crear distintos Portales utilizando los
propios mecanismos de O3 Enterprise Portal.
Características del modelo propuesto
La forma de resolver el problema tiene las siguientes caracaterísticas:
El que ambos sitios (o entornos Web) comparten las mismas licencias, por lo cual los ususarios son el total de usarios del sistema.
Los 2 entornos comparten los cubos, pero es posible realizar una configuración alternativa, como se presenta más adelante en este
mismo wiki.
Configuración
La solución consiste en hacer un deploy de un o3portal.war adicional (el nombre o3portal.war no debe confundirse con el componente O3
Enterprise Portal).
Cada war podrá ser configurado con su propio L&F y también acceder a modelos multidimensionales diferentes.
Procedimiento
Para lograr el objetivo debemos relalizas los siguiente pasos.
1. Bajar el jboss
2. Pararnos en <o3>/jboss/server/default/deploy/gserver/0o3.ear
3.
3. Copiar la carpeta o3portal.war en el mismo directorio con otro nombre ej:o3portal_2.war
4. Copiar la carpeta o3cas.war en el mismo directorio con otro nombre ej:o3cas_2.war
5. editar el archivo <o3>/jboss/server/default/deploy/gserver/0o3.ear/META-INF/application.xml.//
Buscar
<module>
<web>
<web-uri>o3portal.war</web-uri>
<context-root>/o3portal</context-root>
</web>
</module>
y agegar de modo que quede así
<module>
<web>
<web-uri>o3portal.war</web-uri>
<context-root>/o3portal</context-root>
</web>
</module>
<module>
<web>
<web-uri>o3portal_2.war</web-uri>
<context-root>/o3portal_2</context-root>
</web>
</module>
Buscar
<module>
<web>
<web-uri>o3cas.war</web-uri>
<context-root>/cas</context-root>
</web>
</module>
y agegar para que quede así
<module>
<web>
<web-uri>o3cas.war</web-uri>
<context-root>/cas</context-root>
</web>
</module>
<module>
<web>
<web-uri>o3cas_2.war</web-uri>
<context-root>/cas2</context-root>
</web>
</module>
6. editar el archivo <o3>/jboss/server/default/deploy/gserver/0o3.ear/o3portal_2.war/WEB-INF/web.xml
Buscar el filtro
<filter>
<filter-name>checkLoginFilter</filter-name>
<filter-class>com.ideasoft.cs.ejb.cas.filter.CASFilter</filter-class>
<init-param>
<param-name>logout_url</param-name>
<param-value>/cas/logout</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.loginUrl</param-name>
<param-value>${request.prefix}/cas/login</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>
<param-value>${request.prefix}/cas/proxyValidate</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>
<param-value>${request.serverName}</param-value>
</init-param>
</filter>
cambiar por
<filter>
<filter-name>checkLoginFilter</filter-name>
<filter-class>com.ideasoft.cs.ejb.cas.filter.CASFilter</filter-class>
<init-param>
<param-name>logout_url</param-name>
<param-value>/cas2/logout</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.loginUrl</param-name>
<param-value>${request.prefix}/cas2/login</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>
<param-value>${request.prefix}/cas2/proxyValidate</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>
<param-value>${request.serverName}</param-value>
</init-param>
</filter>
7. editar el archivo <o3>/jboss/server/default/deploy/gserver/0o3.ear/o3portal_2.war/o3portal_2.war/logout.jsp
Buscar
if (isSSO) {
response.sendRedirect("/cas/logout?service=" + request.getContextPath());
} else {
response.sendRedirect(request.getContextPath() + "/");
}
y cambiar por
if (isSSO) {
response.sendRedirect("/cas2/logout?service=" + request.getContextPath());
} else {
response.sendRedirect(request.getContextPath() + "/");
}
8. reiniciar el jboss
Haciendo que los usuarios solo entren y vean en el portal correcto
Para lograr que un usario que solo debería ver los cubos de o3portal y no los de o3portal_2
procedemos a:
1. Agregar 2 roles, un se llamará portal_1 y el otro portal_2.
2. Luego le asignamos estos roles a los cubos que correspondan a cada portal.
3. Asignamos los roles creados a cada uno de los usuario que deban entrar a cada portal.
Personalización de los Bookmarks del Portal
Objetivo
Información
No es necesario bajar el jboss para realizar la mayoría de estos cambios
Se decriben en esta página las personalizaciones básicas más frecuentes a realizar en el portal.
Apagar el modo de EDICION para usuarios no administradores
Eliminar marcadores de otros componentes
Presentación del árbol de componentes
Modificación de apertura de cubos
Cambiar el logo en la página de bookmarks
Ordenamiento de las vistas y cubos en el árbol de componentes
Apagar el modo de EDICION para usuarios no administradores
Como resultado de esta modificación se elimina el link "MODO EDICION" para aquellos usuarios que no pertenezcan a un rol de administración.
De esta forma se evita que los usuarios puedan eliminar vistas u otros componentes desde el O3portal. Es imporntante recordar que para el
caso de los componentes en general (salvo las vistas públicas) la posibilidad de modificación o eliminación es controlada a través de mecanismo
de seguridad que definen permisos de Lectura o Escritura para cada cada uno de los componentes y de acuerdo al rol del usuario. Aún así,
puede ser deseable en algunas instalaciones apagar el modo de edición.
Para hacer esto debemos editar el archivo que se encuentra en:
<03>/jboss/server/default/deploy/gserver/0o3.ear/o3portal.war/bookmarksPage.jsp
y buscar las siguientes líneas:
<%--c:if test="${csClient.userPrivileges.adm}"--%>
<td style="padding-right:10px;" align="left">
<a href="edit/switch-mode.jsp" class="links" target="_top">
<c:choose>
<c:when test="${editMode}">
<fmt:message key='bookmarksPage.view.command' bundle='${lang}'/>
</c:when>
<c:otherwise>
<fmt:message key='bookmarksPage.edit.command' bundle='${lang}'/>
</c:otherwise>
</c:choose>
</a>
</td>
<%--/c:if--%>
todo lo que debemos de hacer es descomentar de modo que quede así
<c:if test="${csClient.userPrivileges.adm}">
<td style="padding-right:10px;" align="left">
<a href="edit/switch-mode.jsp" class="links" target="_top">
<c:choose>
<c:when test="${editMode}">
<fmt:message key='bookmarksPage.view.command' bundle='${lang}'/>
</c:when>
<c:otherwise>
<fmt:message key='bookmarksPage.edit.command' bundle='${lang}'/>
</c:otherwise>
</c:choose>
</a>
</td>
</c:if>
salvamos y actualizamos el portal
Eliminar marcadores de ciertos componentes
Los títulos de los marcadores de componentes distintos a Cubos y Vistas pueden ser eliminados, restringiendo la lista de marcadores a aquellos
componentes que serán utilizados en una determinada instalación.
Para hacer esto debemos editar el archivo que se encuentra en:
<03>/jboss/server/default/deploy/gserver/0o3.ear/o3portal.war/bookmarks-trees.jsp
Veamos esto con un caso real, no queremos ver las Reglas
Para esto buecamos en el editor de textos <!- Rules ->
veremos algo así en el código:
<!-- Rules -->
<fmt:message key="bookmarksPage.rules" bundle="${lang}" var="bookmarksRules" />
<bsctf:containedTree treeModel="${rulesModel}"
treeModels="${treeModels}"
actionModels="${actionModels}"
actionModel="${rulesActionModel}"
treeModelInfos="${treeModelInfos}"
rootIconName=".${ideasoft_themes_themePath}/bookmarks/images/bookmark-rule.gif"
rootClosedIconName=".${ideasoft_themes_themePath}/bookmarks/images/bookmark-rule.gif"
defaultLeafIcon=".${ideasoft_themes_themePath}/bookmarks/images/t_yellow.gif"
rootCssClass="rootCssClass"
defaultCssClass="defaultCssClass"
rootLabel="${bookmarksRules}">
</bsctf:containedTree>
todo lo que tenemos que hacer es comentar este pedazo de código con <%- -%> de modo que quede así:
<%-<!-- Rules -->
<fmt:message key="bookmarksPage.rules" bundle="${lang}" var="bookmarksRules" />
<bsctf:containedTree treeModel="${rulesModel}"
treeModels="${treeModels}"
actionModels="${actionModels}"
actionModel="${rulesActionModel}"
treeModelInfos="${treeModelInfos}"
rootIconName=".${ideasoft_themes_themePath}/bookmarks/images/bookmark-rule.gif"
rootClosedIconName=".${ideasoft_themes_themePath}/bookmarks/images/bookmark-rule.gif"
defaultLeafIcon=".${ideasoft_themes_themePath}/bookmarks/images/t_yellow.gif"
rootCssClass="rootCssClass"
defaultCssClass="defaultCssClass"
rootLabel="${bookmarksRules}">
</bsctf:containedTree>
--%>
salvamos y actualizamos el portal
Presentación del arbol de componentes
Es posible adecuar la presentación del arbol de componentes al momento de ingresar al portal, deterimando si el mismo se muestra en forma
expandida o no.
Para hacer esto debemos editar el archivo que se encuentra en:
<03>/jboss/server/default/deploy/gserver/0o3.ear/o3portal.war/bookmarksPage.jsp
buscamos en el editor de textos expandMode
veremos algo como esto
<wt:extTree extTreeModel="${wtTreeModel}"
actionNodeModel="${wtTreeModel}"
name="istoreTree"
openedIcon="jsp/viewer/images/scorecardViewerIcon.gif"
closedIcon="jsp/viewer/images/scorecardViewerIcon.gif"
leafIcon="jsp/viewer/images/scorecardViewerIcon.gif"
openButtonIcon="images/o3portal/t-plus.gif"
closeButtonIcon="images/o3portal/t-minus.gif"
ignoreRootNode="true"
drawCheckbox="false"
leafCssClass="bookmark"
subTreeCssClass="bookmark"
saveVisibility="false"
expandMode="2"
<----------- acá lo que buscamos
target="_top"
subtreeIndent="22"
rowHeight="20"
contextRelativeUrls="false"
/>
expandMode puede tener los siguientes valores
expandMode="1" - máximo nivel de expansión para todos los bookmarks
expandMode="2" - muestra títulos + un primer nivel para todos los bookmarks
expandMode="3" - solo títulos de bookmarks
salvamos y actualizamos el portal
Modificación de apertura de cubos
En ciertos ambientes se desea que los usuarios tengan como punto de partida para el análisis un conjunto de vistas previamente definidas. Esta
personalización elimina la posibilidad de acceder al cubo en forma directa. Además se puede modificar también la información asociada a los
cubos y vistas, que refire a si las vistas son públicas o privadas, y fecha de actualización.
Para hacer esto debemos editar el archivo que se encuentra en:
<03>/jboss/server/default/deploy/gserver/0o3.ear/o3portal.war/bookmarks-model.jsp
buscamos Cubes & Views Tree en el editor de textos
veremos algo como esto
// Cubes
Boolean
Boolean
Boolean
Boolean
& Views Tree
showCubeTime = Boolean.TRUE;
showViewSecurityLevel = Boolean.TRUE;
cubeCreateLink = Boolean.FALSE;
viewCreateLink = Boolean.TRUE;
explicación de los parametros
showCubeTime - muestra fecha y hora de actualización del cubo, TRUE=muestra, FALSE=no muestra
showViewSecurityLevel - muestra si una vista es pública,privada, TRUE=muestra, FALSE=no muestra
cubeCreateLink - habilta o no si se puede abrir el cubo directamente, TRUE=habilita, FALSE=no habilita
viewCreateLink - habilta o no si se puede abrir la vista directamente, TRUE=habilita, FALSE=no habilita
salvamos y actualizamos el portal
Cambiar el logo en la página de bookmarks
Se detalla a continuación cómo cambiar el logo de O3 que se muestra en la página inicial que contiene los marcadores.
Para hacer esto debemos editar el archivo que se encuentra en:
<03>/jboss/server/default/deploy/gserver/0o3.ear/o3portal.war/header.jsp
El tamaño del logo no debería de superar los 70 pixels de alto y de ancho no habría problemas, el mismo lo colocamos en la siguiente carpeta
<O3>/jboss/server/default/deploy/gserver/0o3.ear/o3portal.war/images
Abrimos el archivo con un editor de texto y buscamos logo.gif, veremos algo así
<a href="http://www.ideasoft.com.uy" target="_blank"><img src="images/logo.gif" hspace="0" vspace="0"
border="0"/></a>
cambiamos logo.gif por el nombre de nuestro logo, es importante incluir la terminación del archivo (gif,jpeg,etc)
Si además no queremos que el logo sea un link dejamos así
<img src="images/logo.gif" hspace="0" vspace="0" border="0"/>
si por alguna razón nuestro logo no entra en 70 pixels de altura, deberemos modificar este otro archivo
<03>/jboss/server/default/deploy/gserver/0o3.ear/o3portal.war/index.jsp
editamos y buscamos rows="70,*" encontraremos algo como esto
<frameset rows="70,*" framespacing="0" border="0" frameborder="0">
lo que debemos de hacer es cambiar el valor 70 por el que corresponda a la altura de nuestro logo
salvamos y actualizamos el portal
Cambiar el logo de O3 de la página de bookmarks
En forma análoga a la comentada en la sección anterior sobre el cambio de logo del header de la página de bookmark se puede cambiar el logo
de O3:
Para ello se debe editar el archivo:
/jboss/server/default/deploy/gserver/0o3.ear/o3portal.war/mainHeader.jsp
En la línea 10 modificar la imagen deseada:
<td width="50%"align="left"><img src="images/o3portal.gif" width="104" height="75"></td>
Recordar agregar la imagen en la carpeta <O3>/jboss/server/default/deploy/gserver/0o3.ear/o3portal.war/images
Cambiar título "Mis Bookmarks"
Para ello se debe editar el archivo:
/jboss/server/default/deploy/gserver/0o3.ear/o3portal.war/bookmarksPage.jsp
cambiando la linea:
<fmt:message key="bookmarksPage.header" bundle="${lang}" />
por el titulo deseado, por ejemplo "Mí Título":
<label>Mí Título</label>
Ordenamiento de las vistas y cubos en el árbol de componentes
Atención
Es necesario bajar el jboss para realizar estos cambios
Es posible presentar el árbol de vistas y cubos en forma alfabética (default) o como lo armamos en el admserver.
Para cambiar el comportamiento por defecto (ordenamiento alfabético) debemos crear un archivo nuevo en <O3>/jboss/server/default/ideasoft-o3
que le ponemos por nombre GServer_custom.properties
En el mismo escribimos lo siguiente:
<O3>/jboss/server/default/ideasoft-o3/GServer_custom.properties
CubesAndViews.sort=FALSE
salvamos y re-iniciamos el server
Seleccionar un theme según el usuario que ingresa al sistema
El siguiente código muestra como seleccionar el theme según el login name del usuario.
<O3>/jboss/server/default/deploy/gserver/0o3.ear/o3portal.war/i18n- init.jsp
<%
//initialize the theme
String theme = csApplication.getContext().getProperty("ideasoft.themes.defaultTheme", "red");
session.setAttribute(THEME_SESSION_ATTRIBUTE, theme);
session.setAttribute(THEME_PATH_SESSION_ATTRIBUTE, "/themes/" + theme);
%>
REEMPLAZAR POR:
<%
//initialize the theme
String login = csClient.getUserLogin();
String theme;
if ("user".equals(login)) {
theme = "red";
} else if ("admin".equals(login)) {
theme = "blue";
} else {
theme = csApplication.getContext().getProperty("ideasoft.themes.defaultTheme", "red");
}
session.setAttribute(THEME_SESSION_ATTRIBUTE, theme);
session.setAttribute(THEME_PATH_SESSION_ATTRIBUTE, "/themes/" + theme);
%>
Si se quiere seleccionar mediante rol al que pertenece el usuario, utilizar la siguiente variante
<%
//initialize the theme
String theme;
com.ideasoft.cs.ClientRestrictions cr = csClient.getClientRestrictions();
if (cr.isUserInRole("Manager")) {
theme = "red";
} else if (cr.isUserInRole("User")) {
theme = "blue";
} else {
theme = csApplication.getContext().getProperty("ideasoft.themes.defaultTheme", "red");
}
session.setAttribute(THEME_SESSION_ATTRIBUTE, theme);
session.setAttribute(THEME_PATH_SESSION_ATTRIBUTE, "/themes/" + theme);
%>
Ocultar el link de Logout Según el Rol del Usuario
Realizar las siguientes modificaciones en los archivos header.jsp y desktopHeader.tag:
Buscar el siguiente bloque de código:
<O3>/jboss/server/default/deploy/gserver/0o3.ear/o3portal.war/header.jsp
&nbsp;|&nbsp;
<a href="<%=request.getContextPath()%>/logout.jsp" target="_top" class="header"><fmt:message
key="header.logout" bundle="${lang}"/></a>
y reemplazar por:
<O3>/jboss/server/default/deploy/gserver/0o3.ear/o3portal.war/header.jsp
<%
boolean canEditBookmarks = csClient.isLoginOk() &&
csClient.getClientRestrictions().isUserInRole("Manager");
%>
<% if (canEditBookmarks) { %>
&nbsp;|&nbsp;
<a href="<%=request.getContextPath()%>/logout.jsp" target="_top" class="header"><fmt:message
key="header.logout" bundle="${lang}"/></a>
<% } %>
Buscar:
<O3>/jboss/server/default/deploy/gserver/0o3.ear/o3portal.war/WEB-INF/tags/o3/desktopHeader.tag
&nbsp;|&nbsp;
<a href="javascript:logout()" class="xtabOn"><fmt:message key="jtabs.logout"
bundle="${lang_jdesktop}"/></a>
y reemplazar por:
<O3>/jboss/server/default/deploy/gserver/0o3.ear/o3portal.war/WEB-INF/tags/o3/desktopHeader.tag
<jsp:useBean id="csClient" scope="session" type="com.ideasoft.cs.ejb.web.CSClientBean"/>
<%
boolean canEditBookmarks = csClient.isLoginOk() &&
csClient.getClientRestrictions().isUserInRole("Manager");
%>
<% if (canEditBookmarks) { %>
&nbsp;|&nbsp;
<a href="javascript:logout()" class="xtabOn"><fmt:message key="jtabs.logout"
bundle="${lang_jdesktop}"/></a>
<% } %>
Personalización gráfica del portal 4.3
Objetivo:
Cambiar colores del portal en la página de ingreso y página de marcadores
Consideraciones previas
Es importante saber si estamos usando el sistema single sign-on para determinar donde deberemos buscar las hojas de estilos ccs
Este documento es válido para versiones 4.3.x en adelante para la versión 5 clique aquí
Tener conocimientos básicos de CSS
Cambiando la página de marcadores
La página de marcadores tiene su hoja de estilos en
<O3>/jboss/server/default/gserver/deploy/gserver/0o3.ear/o3portal.war/styles/portal-custom.css
Advertencia!
A efectos de poder llevar nuestras personalizaciones a una nueva versión, se recomienda hacer los cambios en el
portal-custom.css y no en portal.css
veamos algunos cambios
descomentemos (sacar los /* */) de forma que quede así
body {
background-color:
color:
font-size:
font-family:
}
#1571A2;
#FFFFFF;
8pt;
'Verdana';
cambiamos background-color: #1571A2 para cambiar el color de fondo
cambiamos color:#FFFFFF; cambiaremos el color de las letras
el sistema de colores es el clásico RGB en notación Hex (255 = FF,0 = 00)
Cambiando la página de ingreso
Acá es importante saber si usamos o no CAS
Ingreso sin CAS
En este caso usamos el mimos css que para la página de bookmarks, solo que descomentamos
.body-main {
background-color:
color:
font-size:
font-family:
}
#1571A2;
#FFFFFF;
8pt;
'Verdana';
Ingreso con CAS
debemos editar el archivo que se encuentra en <O3>/jboss/server/default/deploy/gserver/0o3.ear/o3cas.war/styles/portal-custom.css
ahí descomentamos
.body-main {
background-color:
color:
font-size:
font-family:
}
#1571A2;
#FFFFFF;
8pt;
'Verdana';
Personalización gráfica del portal 5
Objetivo:
Cambiar colores del portal en la página de ingreso y página de marcadores.
A partir de la versión 5 se implementó para facilitar el cambio de colores y otro cambios de L&F la idea de temas.
En este tutorial explicaremos como cambiar de tema, eligiendo algunos de los prearmados o definiendo uno propio, y personalizar el portal.
Consideraciones previas
Este documento es válido para versiones 5.1.xxx en adelante
Tener conocimientos básicos de CSS
Recomendamos el uso de Firefox junto con el complento Firebug. La combinación facilita el desarrollo de temas en dos aspectos: i)
inspeccionar la página web del portal para encontrar el estilo CSS que se debe modificar, ii) modificar directamente la página para
probar una modificación de estilo CSS.
Temas pre armados
La instalación de O3PS prevee los siguiente temas por defecto:
red
blue
green
grey
red es el tema por defecto.
para cambiar a otro tema basta con agregar un nuevo archivo GServer_custom.properties con una property (puede ser en cualquier lugar, por ej:
al final del archivo), en <o3>/jboss/server/default/ideasoft-o3/GServer_custom.properties, siendo alguna de las siguientes:
ideasoft.themes.defaultTheme = blue
ideasoft.themes.defaultTheme = green
ideasoft.themes.defaultTheme = red
ideasoft.themes.defaultTheme = grey
Advertencia!
Para los temas pre armados se debe respetar el uso de mayúsculas y minúsculas. La herramienta es Case Sensitive.
Reiniciar Jboss
Una vez que se hizo ésto el cambio a otro tema prearmado consisten en cambiar el nombre del color en el archivo .properties y refrescar (no es
necesario reiniciar el jboss)
Creando un nuevo tema : Violeta
A lo efectos de ejemplificar el proceso vamos a crear un nuevo tema que se llamará Violeta.
Pasos a seguir:
1. Copiar la carpeta <o3>/jboss/server/default/deploy/gserver/0o3.ear/o3portal.war/themes/red en el mismo lugar y la re nombramos
como Violeta.
2. Copiar la carpeta <o3>/jboss/server/default/deploy/gserver/0o3.ear/o3cas.war/themes/red en el mismo lugar y la re nombramos
como Violeta.
3. Avisarle al O3Server que use este nuevo tema, para ello en <o3>/jboss/server/default/ideasoft-o3/GServer_custom.properties
agregamos la siguiente property
ideasoft.themes.defaultTheme = Violeta
4. Cambiar al nuevo nombre los css, en:
<o3>/jboss/server/default/deploy/gserver/0o3.ear/o3portal.war/themes/Violeta/common/css copiar el archivo red.css y re
nombrarlo como Violeta.css
Cambiar las clases dentro de Violeta.css. Editemos Violeta.css y cambiamos todos los .red por .Violeta
<o3>/jboss/server/default/deploy/gserver/0o3.ear/o3portal.war/themes/Violeta/jdesktop/css modificar el nombre red.css por
Green.css
Cambiar las clases dentro de Violeta.css. Editemos Violeta.css y cambiamos todos los .red por .Violeta
Si seguimos estos pasos habremos creado un nuevo tema Violeta. Vemos ahora como cambiar algunos estilos
Cambiando estilos en el nuevo tema
Como podemos ver la carpeta de temas tiene varias sub carpetas que ordenan y facilitan los cambios. En su mayoría lo que contienen son las
imágenes correspondientes.
El archivo más importante es <o3>/jboss/server/default/deploy/gserver/0o3.ear/o3portal.war/themes/Violeta/common/css/Violeta.css, en
el tenemos la mayoria de estilos que se aplicarán al o3portal.
El otro archivo importante es
<o3>/jboss/server/default/deploy/gserver/0o3.ear/o3portal.war/themes/Violeta/jdesktop/css/common/Violeta.css, donde tenemos la
mayoría de los estilos que controlan al portal un vez que abrimos un cubo.
Reiniciar Jboss
How To Instalación
Ayudas y explicaciones de cómo realizar instalaciones de O3.
Como instalar en Windows 2003?
How To Cambiar plataforma de O3 a 64 bits
HowTo Correr JBoss con JVM 1.5 de IBM
How To instalación de licencias
HowTo Instalar O3 cambiando el directorio temporal
HowTo Instalar O3 en Suse 10.x
HowTo Instalar O3 multiplataforma
HowTo JBoss como Servicio en Linux
How To migrar versiones
Instalación manual de JBoss como servicio en Windows
Respaldar la Instalación de O3PS
Como instalar en Windows 2003?
Atención
A partir de la versión 4.0.600 este procedimiento no es necesario
El instalador no reconoce que esta en una plataforma Windows 2003, por lo que no se ejecuta correctamente. La solución es forzarle la
plataforma con la property "os.name", con el valor "Windows 2000"
Procedimiento:
Para hacer esto hay que seguir los siguientes pasos:
1.
2.
3.
4.
Renombrar el el O3Setup.exe a O3Setup.exe.zip
Descomprimir este archivo en una carpeta temporal
Editar el archivo O3Setup.lax con editor de texto
Agregar la siguiente línea al final del archivo:
os.name=Windows 2000
respetando mayúsculas y espacios
5. Guardar los cambios
6. Ejecutar O3Setup.exe (que se encuentra junto al O3Setup.lax)
How To Cambiar plataforma de O3 a 64 bits
Contexto
Dado que las versiones actuales de O3 están disponibles para arquitecturas 32 bits, en caso de tener un servidor de 64 bits, será necesario
cambiar de plataforma.
Proceso de cambio de plataforma
1. Bajar la maquina virtual de 64 bits acorde al sistema operativo desde el sitio oficial de Sun:
http://java.sun.com/javase/downloads/index.jsp.
2. Seleccionar Download JRE:
3. En la siguiente página se solicita la plataforma de la JRE, por ejemplo Windows x64 y se debe marcar "I agree...". El resto de los datos
son opcionales:
4. En la pantalla siguiente saldrá un resumen del archivo a bajar:
4.
5.
6.
7.
8.
9.
Seleccionar el checkbox y hacer click sobre el .exe para comenzar la descarga.
Desempacar la máquina virtual.
Renombrar el directorio <o3>/jre a <o3>/jrex32.
Crear directorio <o3>/jre.
Copiar las carpetas lib y bin desde donde se desempaco la jvm de 64 bits a la carpeta <o3>/jre.
Una vez realizado estos pasos, al levantar jboss ya estará operando en modo 64 bits. Es muy probable que se tengan que volver activar las
licencias.
Si el servidor se levanta en consola (jboss.bat o jboss.sh) al comienzo de la ejecución se mostrará el mensaje:
Java HotSpot(TM) 64-Bit Server VM (build 1.5.0_18-b02, mixed mode), con la version correspondiente al JRE.
HowTo Correr JBoss con JVM 1.5 de IBM
IMPORTANTE:
Este HowTo sólo es válido para correr Jboss con JVM1.5 de IBM, y que no precisen del workflow.
Cuando se editen los archivo xml, prestar especial atención en no cambiar nigún tag, no agregar espacios delante que ya no estén, y en
especial en los de encabezados
En el caso de tener una máquina de 64bits es necesario bajar la máquina virtual para 64bits, la de 32 bits no funciona correctamente en una
máquina de 64
PROCEDIMIENTO:
1.
2.
3.
4.
5.
detener el Jboss.
ir a la carpeta donde se instaló O3.
desde ahí ir a la subcarpeta jboss/server/default/deploy .
buscar los siguientes archivos :ear-deployer.xml , ejb-deployer.xml , naming-service.xml , los cuales editaremos.
EDITAR ear-deployer.xml
buscar
<attribute name="CallByValue">true</attribute>
y pasarlo a
<attribute name="CallByValue">false</attribute>
buscar
<attribute name="Isolated">true</attribute>
y pasarlo a
<attribute name="Isolated">false</attribute>
1. EDITAR ejb-deployer.xml
buscar
<attribute name="CallByValue">true</attribute>
y pasarlo a
<attribute name="CallByValue">false</attribute> (línea 231 del .xml)
1. EDITAR naming-service.xml
buscar
<attribute name="CallByValue">true</attribute>
y pasarlo a
<attribute name="CallByValue">false</attribute>
1. ir a la carpeta jboss/server/default/deploy/gserver
2. RENOMBRAR la carpeta 1jwf.ear ej: renombrar como #1jwf.ear
3. levantar el Jboss nuevamente.
How To instalación de licencias
Instalación y Activación
Para activar las licencias deberá estar logueado como administrador o root del equipo.
El proceso de activación de licencias es el siguiente:
1. Ejecutar O3 Browser o cualquier otro módulo que se vaya a utilizar.
Se muestra el siguiente diálogo:
2. Presionar el botón de "Agregar Nueva Licencia" e ingresar los datos de la misma.
Se muestra el siguiente diálogo:
3. Ingresar el texto de la licencia, por ejemplo:
licensedTo=Cliente
key=xxxxxxxxxxxxx-xxxxxxxxxxxxx-xxxxxxxxxxxxx
4.
5.
6.
7.
Presionar el botón Aceptar.
Seleccionar la licencia que se acaba de ingresar de la tabla.
Presionar el botón de "Activar Licencia",
Elegir la activación en línea.
Se muestra el siguiente diálogo:
7.
8. Configurar las opciones de conexión si fuera necesario (proxy, usuario, etc).
9. Presionar Finalizar, y luego Aceptar para concluir el proceso.
Sobre la Activación en Línea
Si se cuenta con una conexión a internet es mucho mejor utilizar la activación en línea en lugar de la activación manual porque es
más rápido y requiere menos intervención del usuario.
Cuando se elije la activación en línea, el Administrador de Licencias se conecta con IdeaSoft para solicitar el código de activación y
el mismo se instala en forma automática.
Por ello es que en algunos casos es necesario configurar las opciones de conexión. Esta configuración es similar a la que se hace
en los navegadores de internet para que se pueda acceder a las páginas de Internet y lo que se debe especificar son los detalles
del servidor proxy o firewall que generalemente se instala en las empresas como mecanismo de seguridad.
Muchos de estos servidores además requieren autenticación. De ahí que también es posible configurar el usuario y la contraseña
para estos servidores.
Estos datos los puede proporcionar el Administrador de la red.
En el caso de que la activación en línea no funcione porque no se pueda establecer una conexión con el servidor, se debe elegir "Activación
Manual" y presionar siguiente.
Se muestra el siguiente diálogo:
Presionar Crear eMail, copiar contenido que se muestra en el dialogo y envíar a la casilla que se indica.
Instalación de licencias sin terminal gráfica
En el caso de instalar en un servidor que no disponga de terminal gráfica, es posible realizar la instalación y activación de las licencias en forma
manual. Más detalles pueden encontrarse en Instalación y Activación de licencias por línea de comando
Instalación de licencias en versiones anteriores a O3 5.0
Si su versión del producto es anterior, por favor consultar el proceso aquí
HowTo Instalar O3 cambiando el directorio temporal
IMPORTANTE:
Este procedimiento fue probado con exito en la instalación con winXP y GNU/Linux,
NO FUNCIONA EN LA INSTALACIÓN MULTIPLATAFORMA - al instalar de la forma java -jar <Directorio>O3Setup.jar en la pruebas realizadas
no cambió
el directorio temporal
Procedimiento para plataforma WinXP
1. Abrir una consola DOS
2. Definir la variable de ambiente TMP
SET TMP=C:\MiCarpeta
3. Ejectutar O3Setup.exe desde la línea de comando para que tome la nueva variable de ambiente
Procedimiento para plataforma GNU/Linux
1. Abrir una consola
2. Defenir la variable de entorno IATEMPDIR
IATEMPDIR=/<Nuevo_directorio>;export IATEMPDIR
3. Ejectutar O3Setup.bin desde la línea de comando para que tome la nueva variable de ambiente
HowTo Instalar O3 en Suse 10.x
PROBLEMA:
Al intentar la instalación con el O3Setup.bin que está en la carpeta Linux, nos da error, no es posible la instalación.
Esto se debe a que hay unas librerias que en la versión 10.x de suse no están por lo cual el instalador falla.
Hay 2 posibles soluciones:
Solución 1
Copiar a nuestro hd la carpeta del cd CDROM_Installers/Disk1/InstData/Suse10/VM/O3Setup.bin y ejecutar este .bin
Solución 2
Hacer la instalación multiplataforma tal cual se describe en el manual
En este caso se debe de tener en cuenta que hay que tener instalda la JVM
HowTo Instalar O3 multiplataforma
Consideraciones previas
En que casos hacer la instalación multiplataforma:
Cuando ya se tiene una JVM en la computadora y no se quiere agregar la que instala O3 por defecto
Cuando para el sistema operativo que tenemos no hay instalador disponible (para GNU/Linux y Windows hay instaladores)
Requerimientos para la instalación
Es necesario para hacer la instalación multiplataforma disponer de la JVM en su computadora
Recomendamos poner especial cuidado ver si la versión que tenemos es la adecuada al sistema operativo, por ej ver si es de 64bits o 32bits
En la línea de comados escribir
java -version
y se obtiene algo como
java version "1.5.0_06"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05)
Java HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode, sharing)
La version debe de ser mayor o igual a 1.5 para las versiones de O3 iguales a 4.2.x
Visitar el sitio de sun para bajar la JVM
Instalación
En el CD de instalación copiar el archivo /Java/O3Setup.jar al directorio que deseamos (puede ser un temporal ya que luego se puede borrar el
O3Setup.jar)
como administradores del sistema en una consola escribir
<path_a_jvm>/java -jar <directorio_O3Setup.jar>/O3Setup.jar
si no se posee interfaz gráfica
java -jar <directorio_O3Setup.jar>/O3Setup.jar -i console
si se usa la jvm del sistema solo hacer
java -jar <directorio_O3Setup.jar>/O3Setup.jar
Continuar con la instalación en forma normal
Luego de terminar la instalación
Quedan por arreglar algunos archivos
El archivo <O3>/sh/settings.sh o <O3>/bat/settings.bateditarlo con un editor de texto cualquiera
buscar:
JVMPATH=$INSTALL_DIR/jre
JVM=$JVMPATH/bin/java
comentar esas líneas y agregar
#JVMPATH=$INSTALL_DIR/jre
#JVM=$JVMPATH/bin/java
JVM=<path_a_jvm>/java
NOTA: si la JVM es la del sitema solo poner JVM=java
Cambios para el Jboss
En caso de usar el Jboss se requiere cambiar también algunos archivos más
Buscar <O3>/sh/jboss.sh o <O3>/bat/jboss.bat y editarlo con cualquier editor de texto
Dentro del archivo buscar
CLASSPATH=.
# Uncomment this line and change the location of the JDK
JAVA_HOME="$INSTDIR/../jre"
y substituir por
JAVA_HOME=<path_al_directorio_de _jvm>
en general este path debe de ser hasta llegar al directorio donde estan entre otras carpetas bin del jvm
y por último buscar <O3>/jre/lib/Tool.jar y agregarlo en <path_al_directorio_de _jvm>/lib , si no existe /lib crearlo
HowTo JBoss como Servicio en Linux
Una vez instalado y en funcionamiento O3, realizar los siguientes pasos:
1.En caso que nuestro sistema inicie en runlevel 3 (sistemas basados en debian lo hacen en runlevel 2), en la carpeta /etc/init.d/rc3.d
crear un link simbólico
al srcipt /etc/init.d/jbossservice.sh de nombre S99o3JBossservice y otro de nombre K99o3JBossservice
La línea de comando para crear S99o3JBossservice es la siguiente parado en /etc/init.d/rc3.d
ln -s <O3_HOME>/sh/jbossservice.sh S99o3JBossservice
ln -s <O3_HOME>/sh/jbossservice.sh K99o3JBossservice
El numero "99" que figura en el nombre indica el orden de inicialización del script al iniciarGNU/Linux, puede ser cualquier número, pero
tiene que ser el
mismo en ambos links.
2. Repetir el paso 2 si quisieramos que además Jboss iniciara en otro runlevel por ejemplo 5 (típico en Suse por ej)
3. Ahora sólo resta probar que funciona. Para eso, reiniciar GNU/Linux, levantar por ejemplo un O3Browser y abrir un cubo del servidor.
How To migrar versiones
Dependiendo de la versión de O3 que se desea migrar el proceso presenta algunas variantes.
Es importante verificar exactamente cuál es la versión que se desea migrar y seguir las instrucciones de acuerdo al siguiente cuadro.
Versión anterior
Versión Nueva
Instrucciones
O3 5.x
O3 5.x.x
Ver Instrucciones
O3 5.0 o 5.1.x
O3 5.2
Ver Instrucciones
O3 4.3.x
O3 5.0.x
Ver Instrucciones
O3 4.1.x o 4.2.x
O3 5.0.x
Ver Instrucciones
Consideraciones de Interés
Consideraciones a tener en cuenta al pasar configuración a Base de Datos
Instalación manual de JBoss como servicio en Windows
A continauación se detallan las instrucciones para instalar el JBoss distribuido con O3 como servicio en plataformas Microsoft (NT, W2000, WXP,
W2003)
Si bien esto no es necesario ya que este paso es ejecutado por el instalador, se han detectado casos en los que es necesaria su ejecución
manual, por ejemplo en algunas instalaciones sobre W2003
Primera solución
Ir a la carpeta :
<o3>\UninstallerData\resource
ejecuta el comando invoker de la siguiente forma:
invoker install service_name service_label executable [start_type [interactive priority]]
parámetros que le vamos a pasar
1.
2.
3.
4.
5.
6.
service_name the name used internally by the SCM
service_label the display name that appears in the Services Control Panel. For multiple words, put them in double quotes.
executable the full path to the EXE
start_type (manual, automatic, or disabled) the service startup type (defaults to manual)
interactive (true or false) can the service interact with the desktop? (defaults to false)
priority (low, normal or high) set the priority of the service process (defaults to normal)
Para una instalación típica esto quedaría de la siguiente forma:
C:\Ideasoft\O3\UninstallerData\resource>invoker.exe install O3JBoss "O3JBoss Application Server"
"C:\IdeaSoft\O3\bin\JBoss.exe -zglaxservice O3JBoss" automatic false normal
Para desinstalar el servicio alcanza con ejecutar:
C:\Ideasoft\O3\UninstallerData\resource>invoker.exe remove "O3JBoss Application Server"
Segunda solución
Para ello se debe bajar el zip JBossService.zip incluido en esta página que contiene el ejecutable que permite instalar y ejecutar el servicio.
Luego seguir los siguientes pasos:
1.
2.
3.
4.
Copiar los archivos que están en el zip en la carpeta <O3 HOME>\bin
Abrir una consola DOS
Ubicarse en la carpeta <O3 HOME>\bin
Ejecutar lo siguiente:
JBossService -install
El servicio queda instalado.
Para desinstalar el servicio alcanza con ejecutar
JBossService -remove
Respaldar la Instalación de O3PS
Ante la necesidad de reinstalar el O3PS, y conociendo que la instalación suele durar unos minutos, pero su puesta a punto puede tener un
tiempo muy variable de minutos a horas; como así mismo a las vistas, escritorios, reglas y otros elementos que hayamos definido y diseñado,
nos es importante tener un respaldo.
En algunos casos, determinados progamas de respaldo se interrumpen ante el bloqueo que el O3Server tiene sobre algunos archivos.
Por lo tanto, presentamos los directorios y archivos necesarios a respaldar, y que con solo la instalación del O3PS y restauración de estos
archivos y directorios tendremos funcionando el O3Server sin inconvenientes.
Directorios y Archivos a respaldar
Teniendo en cuenta que <O3> es el path donde está instalado el O3PS:
<O3>/bat
<O3>/bin
<O3>/jboss/server/default/ideasoft-o3/server
<O3>/jboss/server/default/ideasoft-o3/O3Server.cfg
<O3>/jboss/server/default/ideasoft-o3/GServer.properties
<O3>/jboss/server/default/data/hypersonic/default.script
<O3>/classes/jdbc
<O3>/jboss/server/default/lib
<O3>/jboss/server/default/deploy/gserver/0o3.ear/o3portal.war/
<O3>/jboss/server/default/deploy/mail-service.xml
<O3>/jboss/server/default/conf/jboss-service.xml
<O3>/jboss/server/default/deploy/liferay.war/WEB-INF/classes/portal-ext.properties
Agregar a esta lista aquellos archivos y/o directorios que por alguna configuración particular hayan sido modificados por el usuario.
Si se tiene en base de datos la información del admserver y/o los usuarios
El datasource que está en <o3>/jboss/server/default/gserver/gserver-???-ds.xml
Si se cambió el puerto del tomcat
<O3>/jboss/server/default/deploy/jboss-web.deployer/server.xml
Si hubiera sido personalizada para conectarse con un servidor LDAP:
El xml correspondiente que está en <O3>jboss\server\default\ideasoft-o3\config\rbac
Configuración de O3
Configuración de O3
Documentos con guías para la configuración de O3 en distintos escenarios.
Secciones
Secciones
¿Cómo cambiar los data sources de O3 y Enterprise Portal?
Configuracion de firewall en versión mayor o igual a O3v4.3
Configurando O3 a través de un Firewall
Configurando O3 a través de un NAT
Configurando O3 a través de un Proxy
Eligiendo Idioma, Región, Zona Horaria para O3
HowTo configurar programaciones con base de datos
HowTo O3 Process
HowTo O3 Properties
HowTo Seguridad de O3 en LDAP y Active Directory
HowTo Server con multiples tarjetas de red
Instalando O3 Portal en otros servidores Web
Memory Management
O3 How-to Optimizacion
Single Sign-On
¿Cómo cambiar los data sources de O3 y Enterprise Portal?
Uso
Este wiki aplica únicamente a instalaciones de O3 5.0 y posteriores que tienen almacenada la configuración de O3 y Enterprise
Portal en base de datos (distinta de Hypersonic) y se requiere mover dichas bases a otro servidor.
Por el contrario, si lo que se requiere es migrar instalaciones completas de O3, dirgirse a: Migración entre Versiones de O3.
Contexto
Configuración de O3 y de Enterprise Portal almacenadas en base de datos.
Si surge la necesidad de cambiar de servidor de base de datos de un equipo a otro, se deberán migrar los datos y cambiar también los data
sources de O3 para que apunten a la nueva ubicación de las bases de O3 y de Enterprise Portal.
Procedimiento
Resumen:
1. Mover las bases O3 y O3EP.
2. Detener servidor de O3.
3. Cambiar data source de O3.
4. Cambiar data source de Enterprise Portal.
5. Iniciar servidor de O3.
Se detalla el procedimiento asumiendo que la base de datos que contiene la configuración de O3 se llama O3, y la que contiene la configuración
del Enterprise Portal se llama O3EP.
1. Mover las bases O3 y O3EP (tablas, datos, etc) con el migrador que provea el propio servidor de base de datos. Mantener el nombre original
de las bases para simplificar el procedimiento.
2. Detener servidor de O3.
3. Cambiar data source de O3. En <Instalación O3>\jboss\server\default\deploy\gserver se encuentra el archivo gserver-hsql-ds.xml (este
nombre puede haber cambiado si ya se trabajaba con otra base de datos, por ejemplo gserver-sqlserver-ds.xml). Copiar el archivo y al original
agregarle un # (de forma que quede respaldado como #gserver-hsql-ds.xml).
Editar la copia con cualquier editor de texto.
Se puede utilizar como ejemplo de consulta el archivo <Instalación O3>\jboss\docs\examples\jca\mssql-ds.xml.
Los tags a modificar son:
<connection-url> Indica la url del servidor de base de datos, incluye ip o nombre del servidor, puerto de conexión habitual y nombre de la
base de datos. Ejemplo para SQL Server:
<connection-url>jdbc:sqlserver://localhost:1433;DatabaseName=O3</connection-url>
<driver-class> Clase para conexión jdbc a la base de datos. Ejemplo para SQL Server:
<driver-class>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver-class>
<user-name> Usuario para efectuar la conexión, con permisos de lectura sobre la base de datos.
<password> Contraseña del usuario.
NO se debe modificar el tag <jndi-name>.
4. Cambiar datasource de Enterprise Portal. Los pasos son similares a los de O3, pero el data source se encuentra en el directorio
<Instalación O3>\jboss\server\default\deploy, con el nombre liferay-hsqldb-ds.xml (o similar). Respaldar el archivo original agregandole # al
nombre y modificar la copia.
Se puede utilizar como ejemplo de consulta el archivo <Instalación O3>\jboss\docs\examples\jca\mssql-ds.xml.
Los tags a modificar son:
<connection-url> Ejemplo para SQL Server:
<connection-url>jdbc:sqlserver://localhost:1433;DatabaseName=O3EP</connection-url>
<driver-class> la misma que se utilizó para O3.
<user-name> Usuario para efectuar la conexión, con permisos de lectura sobre la base de datos.
<password> Contraseña del usuario
5. Iniciar el servidor de O3.
Configuracion de firewall en versión mayor o igual a O3v4.3
Los puertos que hay que abrir en un firewall a partir de la version 4.3 de O3 son los siguientes:
Puerto
Descripción
1099
JNDI
1098
JNDI
3455
EJB3
3873
EJB3 a través de RMI
4446
JWF
5744
RMI IdeaSoft
8080
TOMCAT
8093
JMS
14000
jboss messaging
Si se desea usar O3 con el portal unicamente, se debe de abrir solo el puerto 8080, los restantes no son necesarios abrirlos en
el firewall
Se deden agregar las siguientes properties al <O3>/jboss/server/default/ideasoft-o3/GServer_custom.properties de O3 de modo que quede fijo el
puerto para RMI Ideasoft:
ideasoft.server.rmi.socketfactory=true
ideasoft.server.rmi.serversocket.port=5744
A partir de la versión 5.3.000 se debe editar el archivo <O3>/jboss/server/default/ports-bindings.xml y buscar para el juego de puertos
(01-02-03...) la parte de jboss messaging, dentro de esa parte buscar
<attribute name="callbackTimeout">10000</attribute>
y modificar
<attribute name="callbackTimeout">10000</attribute>
<attribute name="secondaryBindPort">14000</attribute>
En el caso de cambiar la configuración de bindings del JBoss , cambiar en el firewall estos puertos:
Descripción
Ports-01
Ports-02
Ports-03
Ports-04
Ports-05
JNDI
1199
1299
1399
1499
1599
JNDI
1198
1298
1398
1498
1598
EJB3
3555
3655
3755
3855
3955
EJB3 a través de RMI
3973
4073
4173
4273
4373
JWF
4546
4646
4746
4846
4946
TOMCAT
8180
8280
8380
8480
8580
JMS
8193
8293
8393
8493
8593
El puerto 5744 no se cambia automáticamente por el archivo de bindings, sino que su valor se especifica en el archivo
GServer_custom.properties
El puerto 14000 no cambia se debe agregar la línea con el puerto en el ports-bindings.xml
Indicación temporal para la version 4.3.beta3
Es necesario modificar el port-bindings, para cambiar el acceso remoto de socket a rmi, para el caso de ports-01 debe quedar asi:
<service-config name="jboss.remoting:type=Connector,name=DefaultEjb3Connector,handler=ejb3"
delegateClass="org.jboss.services.binding.AttributeMappingDelegate">
<delegate-config>
<attribute
name="InvokerLocator">rmi://${jboss.bind.address}:3973/?registryPort=3555</attribute>
</delegate-config>
<binding port="3973"/>
</service-config>
Configurando O3 a través de un Firewall
Configurando O3PS a través de un Firewall
Be Careful
Para versiones menores a la 4.3 hacer clic aquí
Los puertos que hay que abrir en un firewall a partir de la version 4.3 de O3 son los siguientes:
Puerto
Descripción
1099
JNDI
1098
JNDI
3455
EJB3
3873
EJB3 a través de RMI
4446
JWF
5744
RMI IdeaSoft
8080
TOMCAT
8093
JMS
14000
jboss messaging
Nota
Si se desea usar O3 con el portal únicamente, se debe de abrir solo el puerto 8080, los restantes no son necesarios abrirlos en
el firewall
Se deden agregar las siguientes properties al <O3>/jboss/server/default/ideasoft-o3/GServer_custom.properties de O3 de modo que quede fijo el
puerto para RMI Ideasoft:
ideasoft.server.rmi.socketfactory=true
ideasoft.server.rmi.serversocket.port=5744
A partir de la versión 5.3.000 se debe editar el archivo <O3>/jboss/server/default/ports-bindings.xml y buscar para el juego de puertos
(01-02-03...) la parte de jboss messaging, dentro de esa parte buscar
<attribute name="callbackTimeout">10000</attribute>
y modificar
<attribute name="callbackTimeout">10000</attribute>
<attribute name="secondaryBindPort">14000</attribute>
En el caso de cambiar la configuración de bindings del JBoss , cambiar en el firewall estos puertos:
Descripción
Ports-01
Ports-02
Ports-03
Ports-04
Ports-05
JNDI
1199
1299
1399
1499
1599
JNDI
1198
1298
1398
1498
1598
EJB3
3555
3655
3755
3855
3955
EJB3 a través de RMI
3973
4073
4173
4273
4373
JWF
4546
4646
4746
4846
4946
TOMCAT
8180
8280
8380
8480
8580
JMS
8193
8293
8393
8493
8593
El puerto 5744 no se cambia automáticamente por el archivo de bindings, sino que su valor se especifica en el archivo
GServer_custom.properties
El puerto 14000 no cambia se debe agregar la línea con el puerto en el ports-bindings.xml
Indicación temporal para la version 4.3.beta3
Es necesario modificar el port-bindings, para cambiar el acceso remoto de socket a rmi, para el caso de ports-01 debe quedar asi:
<service-config name="jboss.remoting:type=Connector,name=DefaultEjb3Connector,handler=ejb3"
delegateClass="org.jboss.services.binding.AttributeMappingDelegate">
<delegate-config>
<attribute
name="InvokerLocator">rmi://${jboss.bind.address}:3973/?registryPort=3555</attribute>
</delegate-config>
<binding port="3973"/>
</service-config>
Configuración de firewall en versión menor a O3v4.3
Cómo funciona el Servidor
O3 con jboss requiere de cinco puertos TCP/IP diferentes para establecer la comunicación entre el Servidor y los componentes Cliente. Tres de
ellos son fijos, el 1099, 1098 usados por O3, y el puerto 4444 por jboss.
Los otros puertos TCP/IP son puertos escogidos en forma dinámica y al azar. Esto significa que el O3 Server escoge dos puertos disponibles
cuando es iniciado.
Para establecer la comunicación a través de un Firewall, O3 debe ser configurado de tal forma que estos dos puertos sean conocidos de
antemano. Esto es necesario para poder configurar el Firewall correctamente habilitando estos puertos para que la comunicación sea exitosa.
Cómo configurar el O3 Server
El O3 Server debe ser configurado mediante la especificación de las siguientes propiedades del sistema
Nombre de la propiedad
Descripción
ideasoft.server.rmi.serversocket.port
Indica el puerto que deberá ser utilizado para establecer la conexión con el Servidor. Este puerto es
en realidad el primer puerto que será elegido. Si el O3 Server requiere de nuevos puertos tomará el
puerto a continuación y así sucesivamente. Esto significa que es recomendable habilitar este puerto
así como un pequeño rango a continuación de éste en el Firewall
ideasoft.server.callbacks.port
Indica el puerto que será utilizado por el O3 Server para los callbacks. Esto ocurre cuando el O3
Server debe enviar un mensaje hacia el cliente
ideasoft.server.rmi.socketfactory
Habilita o deshabilita el conjunto anterior de propiedades. Esta propiedad tiene el valor "false" por
defecto y debe ser cambiado a "true" para permitir la comunicación a través de un Firewall
ideasoft.server.rmicallbacks
Habilita o deshabilita los callbacks utilizando RMI. Esta propiedad tiene el valor "true" por defecto y
debe ser cambiado a "false" para permitir la comunicación a través de un Firewall
Estas propiedades deben ser especificadas en el archivo llamado GServer.properties que se encuentra en la ruta
<O3>/jboss/Server/default/ideasoft-o3.
Para versiones 3.x este archivo se encuentra directamente en la raiz de la instalación del O3 Server
A continuación se muestra un ejemplo de cómo quedaría el archivo GServer.properties
ideasoft.server.rmi.serversocket.port=4744
ideasoft.server.callbacks.port=4555
ideasoft.server.rmi.socketfactory=true
ideasoft.server.rmicallbacks=false
Adicionalmente, la siguiente propiedad debe ser especificada para indicar el nombre que deberán utilizar las herramientas del cliente para ubicar
al O3 Server
java.rmi.server.hostname=www.ideasoft.biz
Notar que el valor indicado en esta propiedad es simplemente un ejemplo. En un caso real su valor deberá ser igual a la dirección IP o nombre
de la máquina servidor donde se encuentra el O3 Server
Con este ejemplo mostrado arriba, el Firewall deberá ser configurado para que los puertos 1099, 1098, 4444, 4555 y 4744 estén habilitados.
Estos puertos deberán ser abiertos sólo para accesos de entrada. El servidor no intenta conexiones directas a los clientes.
Tal como se indica en los párrafos anteriores, estas propiedades deben ser indicadas en el archivo GServer.properties que se encuentra en la
raíz de la instalación del O3 Server. Esto es válido para versiones 3.0 o posteriores.
Versiones anteriores de O3 requieren que estos valores se indiquen en un archivo llamado o3server.properties. Este archivo no se incluye con
O3 y debe ser creado. (notar que el nombre es sensible a mayúsculas y minúsculas)
Nota
A pesar que la propiedad java.rmi.server.hostname no está directamente relacionada con la ejecución de O3 a través de un
Firewall, normalmente los servidores donde se instala O3 poseen 2 direcciones IP (una interna para la Intranet y otra externa
para Internet).Este tipo de situaciones requieren que se indique esta propiedad para asegurarse que el O3 Server procesa los
pedidos de los clientes en forma correcta. De no indicarse, al momento de iniciar el O3 Server elige una de estas direcciones IP
y sólo aceptará pedidos a dicha dirección, rechazando el resto de los pedidos.Es importante recalcar que la dirección IP o
nombre que se indique en esta propiedad debe corresponder a una dirección accesible tanto desde fuera (Internet) como
desde adentro (Intranet). Esto se logra configurando correctamente el DNS.
Configurando O3 a través de un NAT
Situación
Es bastante común que el servidor de O3 no sea la máquina que está expuesta a la red, usualmente está detrás de un firewall. El problema se
plantea cuando queremos entrar en forma remota al server, por ejemplo para administralo o navegar cubos con el O3Browser.
Para lograr esto debemos hacer NAT de los puertos de O3. Para el O3Web no es necesario este trabajo de configuración.
Consideraciones previas
Dado la complejidad de la configuración, es necesario que O3 trabaje en el juego de puerto por defecto, no pudiendose cambiar o otro juego sin
un trabajo bastante complicado que escapa a este tutorial.
Procedimiento
Bajar el jboss
Editar el archivo <o3>/jboss/server/default/conf/jboss-service.xml y
Buscar (en instalaciones nueva debería esta aprox línea 190)
<mbean code="org.jboss.services.binding.ServiceBindingManager"
name="jboss.system:service=ServiceBindingManager">
<attribute name="ServerName">ports-default</attribute>
<attribute name="StoreURL">${jboss.server.home.url}/port-bindings.xml</attribute>
<attribute
name="StoreFactoryClassName">org.jboss.services.binding.XMLServicesStoreFactory</attribute>
</mbean>
Comentar todo, con esto hacemos que JBoss use el juego de puertos por defecto
<!--mbean code="org.jboss.services.binding.ServiceBindingManager"
name="jboss.system:service=ServiceBindingManager">
<attribute name="ServerName">ports-default</attribute>
<attribute name="StoreURL">${jboss.server.home.url}/port-bindings.xml</attribute>
<attribute
name="StoreFactoryClassName">org.jboss.services.binding.XMLServicesStoreFactory</attribute>
</mbean-->
Editar el archivo <o3>/jboss/server/default/deploy/ejb3.deployer/META-INF/jboss-service.xml
Buscar:
<mbean code="org.jboss.remoting.transport.Connector"
name="jboss.remoting:type=Connector,name=DefaultEjb3Connector,handler=ejb3">
<depends>jboss.aop:service=AspectDeployer</depends>
<attribute name="InvokerLocator">rmi://${jboss.bind.address}:3873</attribute>
<handlers>
<handler
subsystem="AOP">org.jboss.aspects.remoting.AOPRemotingInvocationHandler</handler>
</handlers>
</mbean>
Comentamos
<!--mbean code="org.jboss.remoting.transport.Connector"
name="jboss.remoting:type=Connector,name=DefaultEjb3Connector,handler=ejb3">
<depends>jboss.aop:service=AspectDeployer</depends>
<attribute name="InvokerLocator">rmi://${jboss.bind.address}:3873</attribute>
<handlers>
<handler
subsystem="AOP">org.jboss.aspects.remoting.AOPRemotingInvocationHandler</handler>
</handlers>
</mbean-->
Cortamos y pegamos el siguinete código acontinuación del anterior:
<!-- The following is sample configuration for modifying the Connector-->
<mbean code="org.jboss.remoting.transport.Connector"
name="jboss.remoting:type=Connector,name=DefaultEjb3Connector,handler=ejb3">
<depends>jboss.aop:service=AspectDeployer</depends>
<attribute name="Configuration">
<config>
<invoker transport="rmi">
<attribute name="numAcceptThreads">1</attribute>
<attribute name="maxPoolSize">300</attribute>
<attribute name="clientMaxPoolSize" isParam="true">50</attribute>
<attribute name="timeout" isParam="true">0</attribute>
<attribute name="serverBindAddress">${jboss.bind.address}</attribute>
<attribute name="serverBindPort">3873</attribute>
<!-- líneas agregadas-->
<attribute name="clientConnectAddress">mi_webaddress.com</attribute>
<attribute name="clientConnectPort">3873</attribute>
<!-- líneas agregadas-->
<attribute name="backlog">200</attribute>
</invoker>
<handlers>
<handler
subsystem="AOP">org.jboss.aspects.remoting.AOPRemotingInvocationHandler</handler>
</handlers>
</config>
</attribute>
</mbean>
El valor de mi_webaddess.com debe ser el nombre (DNS) con que se ve nuestro sitio
Editar el archivo <o3>/jboss/server/default/deploy/jms/uil2-service.xml
Buscar:
<mbean code="org.jboss.mq.il.uil2.UILServerILService"
name="jboss.mq:service=InvocationLayer,type=UIL2">
<!-- The server chain -->
<depends optional-attribute-name="Invoker">jboss.mq:service=Invoker</depends>
<!-- JNDI binding -->
<attribute name="ConnectionFactoryJNDIRef">ConnectionFactory</attribute>
<!-- JNDI binding for XA -->
<attribute name="XAConnectionFactoryJNDIRef">XAConnectionFactory</attribute>
<!-- The bind address -->
<attribute name="BindAddress">${jboss.bind.address}</attribute>
<!-- The bind port -->
<attribute name="ServerBindPort">8093</attribute>
<!-- The ping period in millis -->
<attribute name="PingPeriod">60000</attribute>
<!-- Whether tcp/ip does not wait for buffer fills -->
<attribute name="EnableTcpNoDelay">true</attribute>
<!-- Used to disconnect the client on the serverside if there is no activity -->
<!-- Ensure this is greater than the ping period -->
<attribute name="ReadTimeout">120000</attribute>
<!-- Used to disconnect the client on the clientside if there is no activity -->
<!-- Ensure this is greater than the ping period -->
<attribute name="ClientReadTimeout">120000</attribute>
<!-- The size of the buffer (in bytes) wrapping the socket -->
<!-- The buffer is flushed after each request -->
<attribute name="BufferSize">2048</attribute>
<!-- Large messages may block the ping/pong -->
<!-- A pong is simulated after each chunk (in bytes) for both reading and writing -->
<!-- It must be larger than the buffer size -->
<attribute name="ChunkSize">1000000</attribute>
</mbean>
Agregar un linea
<mbean code="org.jboss.mq.il.uil2.UILServerILService"
name="jboss.mq:service=InvocationLayer,type=UIL2">
<!-- The server chain -->
<depends optional-attribute-name="Invoker">jboss.mq:service=Invoker</depends>
<!-- JNDI binding -->
<attribute name="ConnectionFactoryJNDIRef">ConnectionFactory</attribute>
<!-- JNDI binding for XA -->
<attribute name="XAConnectionFactoryJNDIRef">XAConnectionFactory</attribute>
<!-- The bind address -->
<attribute name="BindAddress">${jboss.bind.address}</attribute>
<!-- The bind port -->
<attribute name="ServerBindPort">8093</attribute>
<!-- The ping period in millis -->
<attribute name="PingPeriod">60000</attribute>
<!-- Whether tcp/ip does not wait for buffer fills -->
<attribute name="EnableTcpNoDelay">true</attribute>
<!-- Used to disconnect the client on the serverside if there is no activity -->
<!-- Ensure this is greater than the ping period -->
<attribute name="ReadTimeout">120000</attribute>
<!-- Used to disconnect the client on the clientside if there is no activity -->
<!-- Ensure this is greater than the ping period -->
<attribute name="ClientReadTimeout">120000</attribute>
<!-- The size of the buffer (in bytes) wrapping the socket -->
<!-- The buffer is flushed after each request -->
<attribute name="BufferSize">2048</attribute>
<!-- Large messages may block the ping/pong -->
<!-- A pong is simulated after each chunk (in bytes) for both reading and writing -->
<!-- It must be larger than the buffer size -->
<attribute name="ChunkSize">1000000</attribute>
<!-- líneas agregada-->
<attribute name="ConnectAddress">mi_webadddess.com</attribute>
<!-- líneas agregada-->
</mbean>
Criterio identico para mi_webaddress
Debemos hacer que la máquina se vea así misma con mi_webaddress pare el caso de estar GNU/Linux editar el /ete/hosts de modo que
tenga la siguiente línea
ip_del_server DNS_externo(mi_webaddess)
Abrir en el firewall y hacer NAT de los siguientes puertos:
Puerto
Descripción
1099
JNDI
1098
JNDI
3455
EJB3
3873
EJB3 a través de RMI
4446
JWF
5744
RMI IdeaSoft
8093
JMS
Levantar el JBoss
Configurando O3 a través de un Proxy
Configurando para ver O3 detrás de un proxy
Atención
este wiki es válido solo para versiones 5.x
Problema
Al intentear loguerno desde internet, llegamos a la página de logueo, pero luego de compeltar los datos y apretar entrar nos devuelve una página
en blanco.
Solución
El problema se da con el CAS (single sign on).
Precisamos decirle dende se tiene que buscar a si mismo, para ello editamos el archivo
<o3>/jboss/server/default/deploy/gserver/0o3.ear/o3portal.war/WEB-INF/web.xml
buscar
<filter>
<filter-name>checkLoginFilter</filter-name>
<filter-class>com.ideasoft.cs.ejb.cas.filter.CASFilter</filter-class>
<init-param>
<param-name>logout_url</param-name>
<param-value>/cas/logout</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.loginUrl</param-name>
<param-value>${request.prefix}/cas/login</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>
<param-value>${request.prefix}/cas/proxyValidate</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>
<param-value>${request.serverName}</param-value>
</init-param>
</filter>
remplazar
<param-value>${request.prefix}/cas/proxyValidate</param-value>
por
<param-value>http://localhost:8080/cas/proxyValidate</param-value>
Atención
Cambiar el puerto al que corresponda si se hizo cambio de puerto
Si tenemos el componente REPORT
Si tenemos licenciado el Report deberemos además hacer lo mismo pero en el archivo:
<o3>/jboss/server/default/deploy/o3report.war/WEB-INF/web.xml
Si tenemos el componente ePortal
Si tenemos licenciado el ePortal deberemos además hacer lo mismo pero en el archivo:
<o3>/jboss/server/default/deploy/liferay.war/WEB-INF/classes/portal-ext.properties
buscar
cas.validate.url=http://${o3.cas.server.host}/cas/proxyValidate
y cambiar por
cas.validate.url=http://localhost:8080/cas/proxyValidate
el puerto poner el que corresponda
Eligiendo Idioma, Región, Zona Horaria para O3
Configurando el idioma, región y zona horaria de la interfaz gráfica de O3
Todos los componentes de O3 incluyen soporte de múliples idiomas.
Cuando se ejecuta O3 se determina el idioma y región indicado en la configuración regional de la máquina (comunmente llamada locale) y en el
caso de ser alguno de los idiomas indicados antes O3 se ajusta en forma automática para dicho idioma. En el caso de los separadores de miles
y decimales Java y en consecuencia O3 toma para la configuración de los mismos la región, sin importar los definidos por nostros. Por lo cual si
queremos cambiar esto deberemos de hacerlo por properties.
Sin embargo, es posible configurar en forma manual cuál de los idiomas utilizar y como son los separadores de miles y decimeles.
Esta tablita muestra los idiomas soportados junto con su identificador.
Idioma
Identificador
Español
es
Inglés
en
Portugués
pt
Italiano
it
Esta otra muestra las regiones que definen los separadores de miles y decimeles
Región
Separadores
Identificador
Uruguay
miles - punto
decimales - coma
uy
Mexico
miles - coma
decimales - punto
mx
Para cambiar el valor de Time Zone cuando Java no interpreta el definido en el Sistema Operativo.
Dependiendo de la forma en que se ejecuta O3 (ejecutables de la carpeta bin, o scripts de la carpeta bat/sh) se deben seguir las siguientes
instrucciones:
Usando scripts de la carpeta bat o sh (windows o linux respectivamente)
Cada módulo de O3 cuenta con un script en la carpeta bat o sh que se utiliza para ejecutarlo.
Estos archivos incluyen una sección en la que se definen una serie de variables de ambiente que son luego utilizadas como parámetros del
proceso java que ejecuta el módulo de O3. No es necesario cambiar o poner las 2 properties, dependerá de las necesidades
Ejemplo para archivos .bat
Por ejemplo para configurar el O3 Browser se debe localizar la siguiente sección del archivo Browser.bat
rem Add Application System Properties
set PROPERTIES=%PROPERTIES% -mx200M
A esta sección se le debe agregar una nueva línea de modo que quede de la siguiente forma
rem
set
set
set
set
Add Application System Properties
PROPERTIES=%PROPERTIES% -mx200M
PROPERTIES=%PROPERTIES% -Duser.language=XX
PROPERTIES=%PROPERTIES% -Duser.region=YY
PROPERTIES=%PROPERTIES% -Duser.timezone=ZZ
Donde XX corresponde al identificador del idioma
Donde YY corresponde al identificador de región
Donde ZZ corresponde al valor de la zona horaria
Ejemplo para archivos .sh
Por ejemplo para configurar el O3 Browser se debe localizar la siguiente sección del archivo Browser.sh
# Add Application System Properties
PROPERTIES="$PROPERTIES -mx200M"
A esta sección se le debe agregar una nueva línea de modo que quede de la siguiente forma
# Add Application System Properties
PROPERTIES="$PROPERTIES -mx200M"
PROPERTIES="$PROPERTIES -Duser.language=XX"
PROPERTIES="$PROPERTIES -Duser.regiom=YY"
PROPERTIES="$PROPERTIES -Duser.timezone=ZZ"
Donde XX corresponde al identificador del idioma
Donde YY corresponde al identificador de región
Donde ZZ corresponde al valor de la zona horaria
Usando ejecutables de la carpeta bin
De forma similar al caso anterior, módulo de O3 cuenta con un ejecutable en la carpeta bin acompañado por un archivo con extensión .lax que
sirve para configurarlo.
Para configurar el idioma de cada uno de estos módulos es necesario localizar la línea similar a la siguiente:
lax.nl.java.option.additional=-Xmx100m -Djava.library.path=C:\\IdeaSoft\\O3\\classes\\bin
y agregarle la configuración del idioma -Duser.language=XX donde XX y/o la región -Duser.region=YY donde YY corresponde al identificador
del región;
y/o la zona horaria -Duser.timezone=ZZ donde ZZ corresponde al valor de la zona horaria.
Esta línea quedará entonces de la siguiente forma:
lax.nl.java.option.additional=-Xmx100m -Duser.language=XX -Duser.region=YY -Duser.timezone=ZZ
-Djava.library.path=C:\\IdeaSoft\\O3\\classes\\bin
Para el jboss.sh
En el caso del jboss.sh la modificación es diferente, buscar las siguientes líneas
JAVA_OPTS="-server -Xms128m -Xmx512m"
JAVA_OPTS="$JAVA_OPTS -XX:MaxPermSize=128m"
JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true"
y agregarles :
JAVA_OPTS="-server -Xms128m -Xmx512m"
JAVA_OPTS="$JAVA_OPTS -XX:MaxPermSize=128m"
JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true"
JAVA_OPTS="$JAVA_OPTS -Duser.language=XX"
JAVA_OPTS="$JAVA_OPTS -Duser.region=YY"
Para cuando se baja por JWS
Procedimiento:
1.
2.
3.
4.
5.
6.
7.
ir al directorio donde está instalado O3
de ahí ir al directorio jboss/server/default/deploy/gserver/Oo3.ear
localizar el archivo o3-installer-X.X.XXX.war y renombrarlo ej #o3-installer-X.X.XXX.war (puede variar el número de acuerdo a la versión)
crear ahí mismo una carpeta con el nombre o3-installer-X.X.XXX.war
descomprimir el archivo o3-installer-X.X.XXX.war en la carpeta creada
localizar el archivo o3-installer.jnlp, y abrirlo con un editor de texto
agregar las siguientes property en la parte correspondiente (casi al final del archivo)
<property name="user.language" value="XX">
</property>
<property name="user.region" value="YY">
</property>
<property name="user.timezone" value="ZZ">
</property>
8. reiniciar el jboss y volver a correr la aplicación
HowTo configurar programaciones con base de datos
Escenario
Se quiere usar una base de datos para la persistencia de los proceso de Workflow de la herramienta O3 y persistencia de usuarios.
Estamos en una instalación nueva.
Procedimiento
1.
2.
3.
4.
Instalar O3PS
Levantar el AdmServer
Colocar licencias
Ir al Wizard de migración y elegir Usar una base distinta a la incluida en O3.
a. Elegir el Motor de BD adecuado
b. Completar datos y testar la conexión, puede que para algunas bases de datos haya que proveer el driver correspondiente. El
driver se debe colocar en 2 lugares:
* en <o3>classes/jdbc
* en <o3>/jboss/server/default/lib
c. Apretar el botón de siguiente
d. Apretar el botón de siguiente nuevamente
e. En la última pantalla elegimos Habilitar el uso de la base de datos
5. En caso de elegir MySQL como motor hay que hacer una corrección para evitar un bug del driver, editar el ds de mysql, debería estar en
<o3>/jboss/server/default/deploy/gserver/gserver-mysql-ds.xml.Dejar <connectinon-url> del siguiente modo:
<connection-url>jdbc:mysql://Nombre_del_server:3306/base_de_o3?useOldAliasMetadataBehavior=true</connection-url>
6. Para el caso de estar en la versión 5.1.100:
a. Entrar mysql y cambiar en la tabla cubebuilderdef el id que se autonumérico
b. Entrar mysql y cambiar en la tabla namedcron el id que se autonumérico
c. Entrar mysql y cambiar en la tabla reportcastdef el id que se autonumérico
7. Levantar jboss
8. Ir al browser Archivo->Procesos->Abrir Proceso
a. Elegir carpeta <o3>/files/Process
b. Elegir archivo CronBuilder.xml y aceptar
9. Ir Publicación->Enviar definición al servidor (hay que haber elegido la ventana con el proceso)
10. Ir de nuevo a Publicación->cambiar estado, hay que cambiarlo a testing
11. Ir de nuevo a Publicación->cambiar estado, hay que cambiarlo a producción
12. Ir Archivos->Procesos->Bandeja de entrada
13.
13. Estando en la bandeja de entrada ir a Pendientes->crear instancia del proceso
a. elegir el cronbuilder
14. Repetir pasos 8 a 11 para el O3Builer.xml, no hay que crear una instancia del O3Builder ya que el CronBuilder se encargará de ello.
Con esto quedaría todo pronto para empezar a crear crons para la construcción de cubos
Administrando los procesos
Los procesos creados deben ser administrados desde 2 componentes del browser
Bandeja de entrada
WAdmin
Bandeja de entrada
Para abrir la bandeja Archivos->Procesos->Bandeja de entrada
En la imagen vemos que hay 1 tarea pendiente en la parte izquierda, pero en la medida que coloquemos diferente cubos/reportes para
construir/enviar aparecerán otras tareas pendientes.
Builder schedule
Esta tarea es la encargada de cada 10 minutos chequea que no se haya agregado otro cubo/reporte para crearle la instancia correspondiente.
Cuando nos paramos en esta tarea pendiente vemos que su actividad actual es Wait for expiration.
Supongamos que en el admserver le decimos que el cubo Demo se va a construir en forma automática, luego de aplicar veríamos esto en la
bandeja de entrada.
La construcción del cubo demo es ahora una tarea pendiente más (Process Executor).
Si nos paramos en esta tarea veremos que esta Wait for execution. Esto es que está esperando ser realizada.
WAdmin
Este componente nos permite ver todos los procesos y sus estados respectivos, además nos permite cambiar esos estados.
En Archivos->Procesos->WAdmin
Para buscar el proceso la forma más fácil es filtrando, para ello apretamos el botón con una lupa que esta en la parte "Definición del proceso".
Nos aparecerá la pantalla que se ve en la imagen de arriba.
Seleccionamos el proceso u1- Producción dentro de O3Builder. y aceptamos
Luego apretamos el botón de buscar
Veremos una lista del estilo:
Como ya dijéramos se ven todo los proceso, los pendientes, los cerrados, etc.
En la imagen se ve uno pendiente y dos cerrados.
Cancelar un proceso pendiente
Si por alguna razón quisiéramos cancelar el proceso pendiente (estado en Proceso) debemos cliquearlo y luego apretar el botón GoTo de la
barra de herramientas.
Se despliega una pantalla con un combo activity, elegir final activity
Activar un proceso cerrado
Del mismo modo si quisiéramos activar un proceso cerrado, seleccionamos en el combo Initial Activity
Hacer que CronBuilder se ejecute antes de los 10 minutos
Muchas vecese queremos estar seguros que la construcción de un cubo quedó agendada y no queremos esperar a que el cron builder espere el
tiempo establecido. Para ello en definición de procesos elegimos cron builder y luego buscamos.
Lo seleccionamos y apretamos el botón GoTo de la barra de herramientas. Elegimos la actividad show attrs. Si nos fijamos el id del trabajo,
luego de elegir la actividad deberá cambiar. Podemos ahora verificar en la bandeja de entrada que se ha agregado la construcción del nuevo
cubo.
HowTo O3 Process
Ideasoft O3 Process How-To
¿Cómo configurar y enviar un mail desde un proceso?
¿Cómo generar formularios y usarlos desde un proceso?
¿Cómo publicar un formulario?
¿Cómo modificar el menu web?
Generacion de formularios
¿Cómo generar formularios?
A continuación se describen en un ejemplo los pasos necesarios para generar un formulario ( form) y utilizarlo desde una actividad del proceso.
Notar que como resultado de estos pasos, se genera automáticamente un formulario que contiene todos los atributos declarados en el proceso.
En este ejemplo se presenta la creación y uso de un formulario que es definido por el usuario.
Crear y publicar proceso
Se crea un proceso de nombre "Creditos". Se marca el proceso (checkbox "Usar formulario generado por defecto") para que cuando no se
indique lo contrario se utiliza el formulario generado propio del proceso. Se defininen los siguientes atributos cliente, fecha e importe. Archivo
XML de definicion del proceso. Mapa o dibujo con el flujo del proceso.
Crear formulario (interfaz) por defecto
A partir del proceso crear un form por defecto, este form sirve como template para diseñar el form definitivo.
Salvar en el servidor formulario diseñado
En este ejemplo al form se le agrega un combo box. El objetivo de este comboBox es que el usuario en la actividad del proceso "Autorizar" tome
la decisión de si autoriza o rechaza el credito. El comboBox esta definido de tipo string, tiene los valores "aceptar"/"rechazar" que serán utilizados
en la decision del proceso, y se mapea al atributo "decision" del proceso. Archivo XML de definicion del formulario.
Luego de tener diseñado el formulario el mismo se salva en el servidor, para este ejemplo se le pone el nombre de FormDecision.
Publicar formulario
Una vez diseñado y salvado el formulario, el mismo se publica, en este paso es donde se generan los componentes y estructuras en el servidor
para poder mas tarde ejecutar el formulario.
Usar formulario desde actividad del proceso
En la actividad "Autorizar" del proceso, se setea en el agente de open de la actividad que abra el el formulario "FormDecision"
En la misma actividad de "Autorizar" el proceso toma una decisión según la elección que haya realizado el usuario.
decision = completeAttributes.get("decision");
Log.notice("Creditos.autorizar.complete() decision=" + decision);
if ("aceptar".equals(decision)) {
completeResult.setNextActivityName("Otorgar Credito");
} else if ("rechazar".equals(decision)) {
completeResult.setNextActivityName("Notificar rechazo");
} else {
throw new WFException("La decisión tomada [" + decision + "] no es válida");
}
Si la decision es aceptar el flujo continua en la actividad "Otorgar Credito", si la decision es rechachar el flujo continua en la actividad automática
"Notificar rechazo"
Ejecutar proceso
Crear instancia de proceso / Iniciar autorización del credito
Creando la instancia se inicia el flujo de Creditos, y la instancia de proceso deja pendiente un workitem en la primera actividad del proceso, la
primera actividad del proceso de Creditos es "Autorizar". Utilizando el cliente desktop primero hay que elegir el proceso de creditos, y segundo
presionar el boton de create que efectivamente crea (o inicia) la intancia en el proceso.
Completar workitem / Autorizar crédito
La autorización del crédito se realiza en la actividad "Autorizar". Esta autorización puede realizarse por la bandeja de entrada en el desktop.
O3 Process & eMail
Envío de mail en O3 Process
Configuración del servicio de mail de JBoss
Envío de correo desde el proceso
Configuración del Mail
O3 Process envía mail a través de JBoss. Para configurar el envío de mail se debe editar el siguiente archivo:
<installDir>/jboss/server/default/deploy/mail-service.xml
Usuario de correo y password
En los atributos
<attribute name="User">nobody</attribute>
<attribute name="Password">password</attribute>
colocar en User el nombre de usuario del correo. Por ejemplo, si la casilla desde la cual se mandarán correos es o3server@mi_dominio.com,
el User será o3server
En password se escribe la clave de acceso al SMTP/POP3 en caso de ser necesaria, con lo cual esta parte del XML quedaría:
<attribute name="User">o3server</attribute>
<attribute name="Password">mi_password</attribute>
Configurar servidor SMTP
Colocar el host o ip del servidor de SMTP en el attributo value de la siguiente línea
<property name="mail.smtp.host" value="smtp.nosuchhost.nosuchdomain.com"/>
Configurar cuenta válida
Colocar una cuenta de correo válida del servidor SMTP configurado anteriormente. Poner la dirección de correo en el atributo value de la
siguiente línea:
<property name="mail.from" value="[email protected]"/>
Configuración adicional
Si con la configuración anterior se tienen problemas de envio de mail, puede ser necesario agregar la siguiente propiedad de
manera adicional.
En el archivo, <installDir>jboss\server\default\ideasoft-jwf\GServer_custom.properties agregar la línea:
ideasoft.mail.sender=<dirección de correo del remitente de los correos>
Envío de correo desde el proceso
Los mails se escriben en O3 Process apoyado en el motor de templates Velocity, de Apache.
Por ejemplo:
$attrs.nro_orden
escribe en el asunto o el cuerpo del mail el atributo nro de orden de la instancia de proceso
Objetos y macros Velocity
Se ofrece un conjunto de objetos y macros Velocity que permiten confeccionar las distintas partes que componen un mensaje de correo
electrónico.
Ejemplos
En el proceso Mails.xml se encuentran actividades con ejemplos de envío de mail en los eventos de after complete. Estos ejemplos se explican
en los siguientes links:
Ejemplo mail formato texto plano
Ejemplo mail formato html
Ejemplo mail formato html
Ejemplo de mail en formato html
El siguiente ejemplo muestra el envio de un mail en formato html.
#getLogins("Administrators")
Envia el mail a todos los usuarios del role "Administrators"
#include("styles.css")
Incluye en el cuerpo del mail el CSS stylesheet (colores, formatos, etc) ubicado en
"ideasoft-jwf/config/templates"
Ejemplo mail formato texto plano
Mail en formato texto plano
Este ejemplo muestra el envio de un mail en texto plano. Donde el proceso tiene como atributos de la instancia: login_solicitante, cod_orden,
nro_orden, cliente e importe.
Para: $attrs.login_solicitante
En el campo "Para" puede ir:
una direccion de correo,
el login de un usuario,
un atributo con el login de un usuario (como el caso de este ejemplo),
o la invocación a una macro velocity que devuelve los logins de los usuarios de un role dado, como en el ejemplo: Ejemplo mail formato
html
Objetos y macros disponibles usando Velocity
Objetos disponibles en el header y body de los mails
Nombre del
objeto
Descripción
attrs
Contiene todos los atributos de una instancia de proceso. Representa la interface IAttributeSet.
formatter
Permite formatear y setear valores por defecto para el formato de tipos numéricos o fecha. Es una instancia de la clase
ObjectFormatter.
Macros velocity de O3 Process
Nombre de la macro
Descripción
getLogins(<<role name>>)
Dado un nombre de rol retorna la lista de logins de los usuarios
miembros del rol.
showAttributes(<<titulo>> [<<lista atributos entre
'"' separados por ','>>] <<nombre del link
(opcional)>> <<parametros del link (opcional)>>)
Muestra una tabla html con la lista de atributos dada.
También puede mostrar un link a la bandeja de entrada, la dirección
del link se configura por la propiedad velocity.indexFullPath en
ideasoft-jwf/GServer_custom.properties.
showHistory()
Muestra la historia de la instancia en el proceso de workflow.
Publicacion formulario
Publicación de un formulario
Supongamos que tenemos un formulario ya definido de nombre formUI.xml.
1. Primero debe salvarse (Save UI as/Guardar UI como) formUI.xml en el servidor (remote file), y
2. recién luego hacer el deploy form.
Nota 1. El nombre de la tarea es la forma de identificarla en O3 Process. Cuando un script quiere hacer uso del formulario, debe invocar
la tarea por este nombre.
Nota 2. En este contexto, el término tarea se refiere a tarea de EDF y no se corresponde con ningún concepto de O3 Process que
pueda ser un sinónimo (e.g. actividad y workitem).
Para la creación de un formulario y su uso en un proceso ver este how-to.
Web menu
¿Cómo modificar el menu web?
El siguiente ejemplo muestra como agregar en el menu web de O3 Process, un link para crear una intancia de proceso y un link para consultar la
bandeja de pendientes para un proceso dado. El menu una vez modificado quedará asiEl ejemplo se basa en un proceso llamado "Creditos" que
esta publicado en el servidor, en estado testing o producción.
El menu se determina a partir del archivo XML edfContext.xml, el cual se encuentra en la instalación del servidor en:
jboss/server/default/deploy/gserver/1jwf.ear/jwf.war/edf/context/edfContext.xml
Para agregar un item de creación de instancias en el proceso de "Creditos", se deben agregar las siguientes lineas a edfContext.xml
Dentro del elemento "units" agregar:
<unit name="nuevoCredito" task="Creditos_v1_u1_default" label="Nuevo Credito">
<argument name="procDefName" value="Creditos" type="string"/>
<argument name="toolInvocationAction" value="create" type="string"/>
</unit>
Dentro del elemento "menuTemplate" agregar:
<interactionRef name="nuevoCredito"/>
"Creditos_v1_u1_default" es el nombre del formulario por defecto que se genera con el proceso
Para agregar un item de consulta de bandeja de entrada para el proceso de "Creditos", se deben agregar las siguientes lineas a edfContext.xml
Dentro del elemento "units" agregar:
<unit name="pendCreditos" task="jwfPending" label="Creditos Pendientes">
<argument name="procDefName" value="Creditos" type="string"/>
</unit>
Dentro del elemento "menuTemplate" agregar:
<interactionRef name="pendCreditos"/>
HowTo O3 Properties
Dónde se definen las properties?
Los distintos componentes leen un conjunto de propiedades de configuración (properties) al momento de comenzar la ejecución. Para cada
componente existen uno o varios archivos donde se definien las properties. El caso más corriente es que exista un solo archivo asociado a cada
componente creado por la propia instalación de O3. Los archivos de configuración generados por la instalación tienen el nombre formado de la
siguiente manera:
O3<nombre_componente>.properties
Por ejemplo: O3Browser.properties, O3Designer.properties, O3Builder.properties, etc
La ubicación por defecto de estos archivos es en la raíz de la instalación de O3. Pero también pueden encontrarse en el HOME del usuario (p.e.
Documents and Settings\username). Además a veces se utilizan variantes en los nombres de los archvios para dejar en claro que son
generados por el usuario, por ejemplo O3Browser_custom.properties
Es importante entonces conocer el orden en que se leen estos archivos, lo que podemos obervar mirando el log al iniciar un componente. A
continuación se muestra como ejemplo para observar el orden de lectura, la ejecución del O3Browser:
Loading Application properties file from: C:\Ideasoft\O3\O3Browser.properties
Loading Custom Application properties file from: C:\Ideasoft\O3\O3Browser_custom.properties
Loading User properties file from: C:\Documents and Settings/user1/O3Browser_user.properties
Loading Configuration from : C:\Documents and Settings\user1/O3Browser.properties
En el caso del O3Browser, también se lee al final, el archivo de cofiguración o3connect.properties
ubicado en el home del usuario
A continuación se describen las properties más usadas.
O3 Builder y O3 Designer
Property
Descripción
Valor por
defecto
ideasoft.o3.designer.previewRecords
Cantidad de tuplas en la Vista Previa del Designer
13
ideasoft.o3.designer.assistTimeOut
Time out para el botón de Asistencia del Designer
10000
ideasoft.o3.designer.testTimeOut
Time out para el botón de test del Designer
10000
ideasoft.o3.designer.autoFillTimeOut
Time out para el botón de autoFill
10000
ideasoft.o3.recycledNodeName
Permite cambiar la etiqueta del nodo Recycled
Recycled
ideasoft.o3.fillerNodeName
Permite cambiar la etiqueta de los nodos Filler. Válido para dimensiones Formato y
Arista
Filler
ideasoft.o3.fillerNodePropagateName
Indica que los nodos Filler toman la misma etiqueta que sus padres. Válido para
dimensiones Formato y Arista
false
o3.sql.useSystemProp
Habilita o deshabilita el uso del System Properties para la conexión JDBC
true
o3.sql.useTransactionReadUncommited
Fuerza o no TransactionIsolation de la conexión SQL a
Connection.TRANSACTION_READ_UNCOMMITTED
false
gclient.server.port
Puerto de conexión al repositorio remoto. En versión 4 y posteriores se sustituye por
las Opciones de Conexión
1099
gclient.server.host
Nombre del host para repositorio remoto. En versión 4 y posteriores se sustituye por
las Opciones de Conexión
localhost
gclient.server.name
Siempre lleva el mismo valor
O3Server
gclient.singleSignOn
Evita pedir loguin por cada nueva conexión. Solo para versión 4 y posteriores
true
O3 Server
Información útil
El archivo GServer_custom.properties ubicado en:O3_INSTALL_DIR\jboss\server\default\ideasoft-o3
Property
Descripción
Valor
por
defecto
ideasoft.o3.cache.maxsize
Tamaño máximo de la cache de cada cubo medido en bloques
1000
o3.monitorPeriod
Cantidad de tuplas procesadas entre logs
5000
ideasoft.o3.pool.totalMaxCache
Tamaño máximo medido en bloques de la cache de cubos. La suma de los tamaños de
cache de todos los cubos abiertos del servidor nunca supera esta cantidad
25000
istore.permission.default
Define si los componentes almacenados en el repositorio remoto (istore) quedan visibles
por defecto para los distintos roles. Para que deban ser autorizados explícitamente, debe
asignarse valor false
Se define en el archivo GServer_custom.properties
true
o3.views.defaultRestriction
Restricción de que cada vista solo puede ser eliminada por el usuario que la creó. Se
define en el archivo GServer_custom.properties
owner
-DBuilderQueue_maxSession
Se modifica en el jboss.lax/jboss.sh. Define la cantidad maxima de procesos que serán
consumidos de la cola de procesos. Esto es para cuando usamos el proceso de
construcción autamática
1
o3.client.maxYSize
Modifica la cantidad de filas máximas que devuelve el server. Se agrega en
GServer_custom.properties
Esta configuración se lee por consulta o por sesión, por lo que no es necesario reiniciar
JBoss luego de modificar su valor, salvo que se esté utilizando por primera vez el
GServer_custom.properties (es decir, que se esté creando dicho archivo)
5000
o3.client.maxXSize
Modifica la cantidad de columnas máximas que devuelve el server. Se agrega en
GServer_custom.properties.
Ver comentario en property anterior
500
o3.lazyreport.maxXSize
Modifica la cantidad máxima de columnas en el modo reporte
50
o3.force.restrictions.ranking
Hace que se aplique rankings automaticos sin que el usuario lo indique expresamente
(cuando el valor es true). Se agrega en GServer_custom.properties
false
o3.default.graphType
Hace que por defecto se abra en formato grilla si vale 0
se agrega en GServer_custom.properties
1
o3.tcp.port
Modifica el puerto en el que escucha O3 al report
se agrega en GServer_custom.properties
7777
o3.accept.without.roles
Si se especifica la siguiente propiedad
se hace que una licencia concurrente tome a todos los usuarios como si pertenecieran al
rol bi-*
se agrega en jboss/server/default/ideasoft-o3/GServer_custom.properties
true
<session-timeout>60</session-timeout>
Cambia el timeout de las sesiones web para O3
se modifica en
<o3>/jboss/server/default/deploy/gserver/0o3.ear/o3portal.war/WEB-INF/web.xml
el valor es en minutos
60
o3.config.dataBase
Cambia la definición de la configuración de O3Server para que se guarde en base de
datos en lugar de utilizar el archivo O3Server.cfg(cuando el valor es true). Se agrega en
GServer_custom.properties
false
rbac.users.limit
Modifica la cantidad de usuarios a mostrar en la lista desplegable de usuarios. Se agrega
en AdmServerApp.properties
100
o3.metadata.cache.enabled
Indica si se activa la metadata restringida para los clientes
False
o3.memberCache.size
Máxima cantidad de elementos a disponer en el cliente por dimensión
20000
o3.metadata.client.maxChildren
La cantidad máxima de hijos de un elemento que se transmiten al cliente.
Si hay más hijos en el servidor, en el árbol de dimensiones presentado al usuario se
indica mediante un "Más elementos ..." al final de los elementos desplegados.
500
o3portal.waitcube.time
Tiempo máximo expresado en milisegundos destinado a la apertura de vistas de O3
30000
o3.reportMode.initial
Establece el modo paginado por defecto. Está property se controla solo cuando se abren
cubos.
false
Varios
Property
Descripción
Valor por defecto
allowEmptyPasswords
Determina si se admiten passwords nulas cuando autenticamos contra un LDAP
Hay que modificar el archivo
<o3>/jboss/server/default/ideasoft-o3/config/rbac/JndiConfiguration-*.properties
true
HowTo Seguridad de O3 en LDAP y Active Directory
Esta página explica cómo configurar el Servidor de O3 para utilizar un servidor LDAP o Active Directory como soporte para la definición de
usuarios y roles, así como manejar la autenticación al sistema.
Se asume que se tienen conocimientos básicos del protocolo LDAP, así como conocimientos de cómo configurar el servidor LDAP o Active
Directory que se desea utilizar.
Se presentan algunos ejemplos que deben tomarse simplemente como guía ya que las estructuras de directorios presentadas pueden variar
dependiendo del servidor LDAP utilizado.
Este instructivo se aplica a versiones 4.0.400 o posteriores
La seguridad del O3 Server
La seguridad del Servidor de O3 se basa sobre un módulo comúnmente conocido como RBAC (Role Based Access Control).
Este módulo define un conjunto de repositorios que son los encargados de almacenar los diferentes elementos involucrados en la seguridad del
servidor - usuarios, roles, atributos, asociaciones entre ellos, etc.
Es posible elegir diferentes implementaciones de estos repositorios de modo que los datos puedan ser leídos desde diferentes servidores y
utilizando tecnologías diferentes.
O3 incluye una implementación de este módulo para poder conectarse a servidores de directorio tales como LDAP y Active Directory.
Configurando el Servidor de O3
La elección de qué implementación de los repositorios de RBAC usar se realiza en el archivo GServer.properties que puede encontrarse en la
carpeta <O3>/jboss/server/default/ideasoft-o3
Este archivo define un conjunto de properties que permiten indicar el repositorio que debe utilizarse.
#RBAC Repositories Configuration
#rbac.roleRepository
= com.ideasoft.rbac.repository.impl.jndi.JndiRoleRepository
#rbac.userRepository
= com.ideasoft.rbac.repository.impl.jndi.JndiUserRepository
#rbac.raAssignmentRepository = com.ideasoft.rbac.repository.impl.jndi.JndiRAAssignmentRepository
#rbac.loginService
= com.ideasoft.rbac.repository.impl.jndi.JndiLoginService
La distribución de O3 incluye estas properties comentadas, tal como puede verse por los caracteres "#" al principio de cada línea. Para poder
activar el uso de LDAP o Active Directory es necesario quitar esos caracteres del principio de cada línea de modo que queden de la siguiente
forma:
#RBAC Repositories Configuration
rbac.roleRepository
= com.ideasoft.rbac.repository.impl.jndi.JndiRoleRepository
rbac.userRepository
= com.ideasoft.rbac.repository.impl.jndi.JndiUserRepository
rbac.raAssignmentRepository = com.ideasoft.rbac.repository.impl.jndi.JndiRAAssignmentRepository
rbac.loginService
= com.ideasoft.rbac.repository.impl.jndi.JndiLoginService
Nota
Si lo único que se desea es validar los usuarios contra LDAP o Active Directory, teniendo los roles definidos en la base de datos
de O3, sólo deberá descomentarse las líneas que especifican el rbac.loginService y rbac.userRepository. Si no se habilita el
rbac.userRepository todos los usuarios deberán existir tanto en LDAP como en la base de datos de O3.
Además de habilitar el uso de implementaciones alternativas de los repositorios de RBAC, es necesario configurar una serie de parámetros que
cada mecanismo (LDAP o Active Directory) requieren para su correcto funcionamiento.
Estas configuraciones específicas para cada servidor se indican en un archivo adicional que se encuentra en la carpeta
<O3>/jboss/server/default/ideasoft-o3/config/rbac
El nombre del archivo de configuración a utilizar se indica también en el GServer.properties que puede encontrarse en la carpeta
<O3>/jboss/server/default/ideasoft-o3 mediante la siguiente property:
jndi.cfg.filename = JndiConfiguration-SunONE.properties
La distribución de O3 incluye dos archivos de ejemplo JndiConfiguration-MS.properties y JndiConfiguration-SunONE.properties para
Microsoft Active Directory y SunONE Directory Server respectivamente. Al final de este documento se pueden ver estos ejemplos.
Estos archivos definen los siguientes parámetros:
Parámetro
Descripción
java.naming.provider.url
Indica la ruta al servidor donde se encuentran los repositorios. Esta ruta es de la forma
ldap://<host>:<port>
java.naming.factory.initial
Indica el nombre de la clase java que implementa el Contexto Inicial. Este es un parámetro del
sistema que no debe cambiarse a menos que se indique lo contrario. El valor por defecto de esta
property es "com.sun.jndi.ldap.LdapCtxFactory"
java.naming.security.authentication
Indica el mecanismo de autenticación. Este es un parámetro del sistema que no debe cambiarse a
menos que se indique lo contrario. El valor por defecto de esta property es "simple"
browseUserDN
Distinguished Name del usuario que utiliza el sistema para obtener las listas de usuarios, roles, etc.
browseUserPassword.plain
Contraseña del usuario indicado en el parámetro browseUserDN. El valor de esta property se ingresa
como texto plano y una vez que el servidor se reinicia ésta es cambiada por la property
browseUserPassword cuyo valor será encriptado en forma automática por el servidor
roleDefAttributeID
Nombre del atributo que deben tener las entradas en el directorio que representan roles
roleDefValueAttributeID
Valor que debe tener el atributo roleDefAttributeID para ser considerado un rol
roleNameAttributeID
Atributo que se va a utilizar para recuperar el nombre del rol
roleSearchBaseDN
DN a partir del cual se buscarán los roles
userDefAttributeID
Nombre del atributo que deben tener las entradas en el directorio que representan usuarios
userDefValueAttributeID
Valor que debe tener el atributo userDefAttributeID para ser considerado un usuario
userNameAttributeID
Atributo que se va a utilizar para recuperar el nombre del usuario
userSearchBaseDN
DN a partir del cual se buscarán los usuarios
userRolesAttributeID
Nombre del atributo multivaluado que contiene la lista de los roles que tiene asignado el usuario
Nota
Para el caso en que la lista de roles indicada por la property userRolesAttributeID sea una lista de DN (Distinguished Name) en
lugar de los nombres de los roles directamente, es necesario especificar el atributo dereferenceRoleAttribute, el cual indica el
atributo a partir del cual se va a obtener el nombre del rol. En este caso, el valor de dereferenceRoleAttribute y el de
roleNameAttributeID deben coincidir para que funcione correctamente la asignación de roles a usuarios.
Nota
Para que la validación de usuarios sea exitosa es necesario que éstos tengan definidos el atributo "dn"
Ejemplos de Archivos de Configuración
Ejemplo de Archivo de configuración para Microsoft Active Directory
#Microsoft - Active Directoy Configuation file
allowEmptyPasswords
= false
java.naming.provider.url
userRolesAttributeID
dereferenceRoleAttribute
= ldap://dataserver:389
= memberOf
= cn
#Browse user's
DN (used to bind to the Directory)
#Option 1: User Principal Name (username@domain)
#browseUserDN
= [email protected]
#browseUserPassword.plain = ????????
#Option 2: DN (Distinguished Name) asumiendo en AD un usuario O3 User
browseUserDN
= CN=O3 User, CN=Users, DC=xxxxxxx,DC=xxx
browseUserPassword.plain = ????????
#Roles's Entry definition
roleDefAttributeID
roleDefValueAttributeID
roleNameAttributeID
roleSearchBaseDN
=
=
=
=
objectclass
group
cn
ou=Roles, dc=radiusserver, dc=ideasoft, dc=com
#User's Entry definition
userDefAttributeID
userDefValueAttributeID
userNameAttributeID
userSearchBaseDN
=
=
=
=
objectclass
user
sAMAccountName
cn=Users, dc=xxxxxxxx, dc=xxx
Ejemplo de Archivo de configuración para SunONE Directory Server
#Sun ONE Directory Server Configuation file
java.naming.provider.url
userRolesAttributeID
dereferenceRoleAttribute
= ldap://dataserver:51685
= nsrole
= cn
#Browse user's DN (used to bind to the Directory)
browseUserDN
= uid=admin, cn=directory administrators, dc=ideasoft
browseUserPassword.plain = ????????
#Roles's Entry definition
roleDefAttributeID
roleDefValueAttributeID
roleNameAttributeID
roleSearchBaseDN
=
=
=
=
objectclass
ldapsubentry
cn
ou=People, dc=ideasoft
#User's Entry definition
userDefAttributeID
userDefValueAttributeID
userNameAttributeID
userSearchBaseDN
=
=
=
=
objectclass
person
uid
ou=People, dc=ideasoft
Ejemplo de Archivo de configuración para Apache DS
java.naming.provider.url
userRolesAttributeID
= ldap://localhost:10389
= memberOf
#Browse user's DN (used to bind to the Directory)
browseUserDN
= uid=admin,ou=users,o=ideasoft,dc=ideasoft,dc=com
browseUserPassword.plain
= ????????
#Role's Entry definition
roleDefAttributeID
roleDefValueAttributeID
roleNameAttributeID
roleSearchBaseDN
=
=
=
=
objectclass
group
cn
ou=Roles, o=ideasoft, dc=ideasoft, dc=com
#User's Entry definition
userDefAttributeID
userDefValueAttributeID
uderNameAttributeIs
userSearchBaseDN
=
=
=
=
objectClass
person
uid
ou=users,o=ideasoft,dc=ideasoft,dc=com
HowTo Server con multiples tarjetas de red
Servidor con múltiples tarjetas de Red
Situación
Cuando se instala O3 en un entorno de red interna (LAN), comunmente los servidores cuentan con una única tarjeta de red y no se requiere
ninguna configuración especial.
Cuando O3 se instala en un servidor con múltiples tarjetas de red (por ejemplo en un equipo que es accedido desde la LAN y desde Internet),
puede requerirse la configuración específica de elementos que indiquen en que direcciones IP se están brindando los servicios.
Contexto
El servidor de aplicaciones sobre el que corre O3 debe reconocer sobre que direcciones IP del servidor tiene publicado los servicios que expone.
Cuando el equipo cuenta con una tarjeta única de red, normalmente no es necesario hacer ninguna configuración particular.
En un entorno con múltiples tarjetas de red, es necesario configurar adecuadamente en que dirección IP están publicados los servicios. Esta
configuración es a nivel del Servidor de aplicaciones.
Síntomas
Síntoma 1
El servidor de aplicaciones levanta y pone a O3 en funcionamiento bajo una de las posibles direcciones IP. Cuando las aplicaciones clientes de
O3 corren localmente (en el host) o desde la subred en la que quedó publicado el Servidor de O3 el funcionamiento es normal. Cuando se
accede desde la otra subred no se obtienen respuesta.
Alternativas de Configuración
La configuración correcta se basa en indicar al servidor que publique el servicio bajo una IP que sea accesible desde los puestos en los que se
va a trabajar. Cuando O3 es accedido desde la LAN y desde Internet, esot significa que dicha dirección (o nombre), debe resolverse por DNS
adecuadamente desde ambas redes.
Alternativa 1: Mediante una propiedad se configura la IP donde está publicado O3
Mediante una propiedad se indica la IP donde el O3 Server está publiacdo.
java.rmi.server.hostname=IP/NOMBRE_DEL_SERVER
si estamos en GNU/Linux poner la propiedad en jboss.sh
JAVA_OPTS="$JAVA_OPTS -Djava.rmi.server.hostname=IP/NOMBRE_DEL_SERVER"
si estamos en Windows poner en el jboss.lax
buscar
lax.nl.java.option.additional=-XX:MaxPermSize=128m -Xrs -Xms128m -Xmx512m -Djava.awt.headless=true
-Djava.library.path="C:\\IdeaSoft\\O3/classes/bin"
y agregar
lax.nl.java.option.additional=-XX:MaxPermSize=128m -Xrs -Xms128m -Xmx512m -Djava.awt.headless=true
-Djava.library.path="C:\\IdeaSoft\\O3/classes/bin" -Djava.rmi.server.hostname=IP/NOMBRE_DEL_SERVER"
Alternativa 2: Parámetro -b
Para probar el parametro -b, se puede primero conrrer desde la consola de la siguiente forma
en linux
./jboss.sh -b IP_DEL_SERVER
en windows
jboss.bat -b IP_DEL_SERVER
Luega probames si nos resuelve el problema conectandonos con el admserver o el browser
Si nos soluciona entonces podremos cambiar los archivos de arranque para que sea definitivo
en linux editar el jboss.sh de modo que quede así:
$INSTALL_DIR/jboss/bin/run.sh $* -b IP_DEL_SERVER
en windows debemos editar el jboss.lax de modo que quede así:
lax.command.line.args=-b IP DEL SERVER $CMD_LINE_ARGUMENTS$
Más información
....
Instalando O3 Portal en otros servidores Web
La instalación de O3 distribuye el O3 Portal preconfigurado para se ejecutado dentro de un JBoss, de hecho la instalación de O3 incluye una
versión de JBoss para mayor comodidad
Sin embargo en muchas organizaciones es necesario utilizar Servidores Web ya existentes con capacidades suficientes para ejecutar el O3
Portal
Estos servidores deben contar con soporte para JSP 1.2 y estar ejecutando con Java 1.5
A continuación se describen las instrucciones para realizar la instalación en diferentes servidores
Memory Management
¿Cómo aumentar la memoria de los módulos de O3?
Aumentando memoria de módulos y servicios
Todos los módulos de O3 (O3Browser, O3Designer, JBoss, etc.) están configurados para utilizar hasta cierta cantidad máxima de memoria. En
general nunca pasan de ese máximo pero cuando esto sucede las aplicaciones muestran en el log el error: java.lang.OutOfMemoryError
La solución consiste en configurar el módulo aumentándole esa cantidad de memoria máxima.
Versión 5.3 y anteriores:
La configuración es muy simple, en el caso de O3Browser alcanza con modificar el archivo de texto [o3]/bin/Browser.lax en la línea donde dice:
lax.nl.java.option.additional=-Xmx200m -Djava.library.path....
cambiando el número 200 (que corresponde a 200 Mb de memoria) por el que se considere más conveniente.
El cambio tendrá efecto la próxima vez que se inicie el módulo
Para el resto de los módulos el cambio es análogo salvo que en lugar de modificar Browser.lax se debe modificar el .lax correspondiente. Por
ejemplo: para el caso de O3Designer es Designer.lax, para el caso de JBoss es JBoss.lax (modificando aquí se le está aumentando la memoria
al servicio JBoss), para el caso de Builder es Builder.lax, etc.
Versión 5.4 y posteriores:
La configuración es muy simple, en el caso de O3Browser alcanza con modificar el archivo de texto [o3]/bin/Browser.vmoptions en la línea
donde dice:
#
############ Memory Paremeters
#
-Xmx200m
cambiando el número 200 (que corresponde a 200 Mb de memoria) por el que se considere más conveniente.
El cambio tendrá efecto la próxima vez que se inicie el módulo
Para el resto de los módulos el cambio es análogo salvo que en lugar de modificar Browser.vmoptions se debe modificar el .vmoptions
correspondiente. Por ejemplo: para el caso de O3Designer es Designer.vmoptions, para el caso de O3JBoss es O3JBoss.vmoptions
(modificando aquí se le está aumentando la memoria al servicio JBoss), para el caso de Builder es Builder.vmoptions, etc.
Es importante saber que el cambio explicado tiene efecto solo cuando se arrancan los módulos de la forma habitual, es decir,
ejecutando los archivos .exe de la carpeta o3/bin. Esto es equivalente a ejecutar los módulos desde el menú o desde los
accesos directos dejados por el instalador.
Limite de memoria de JBoss para plataformas de 32bits
JBoss tiene un limite de memoria de 1400MB para plataformas de 32bits, este limite esta impuesto por el sistema operativo e incluye memoria de
otros procesos.
Esto implica que para plataformas de 32bits el parámetro máximo para JBoss es -Xmx1400. Para plataformas de 64bits se puede sobrepasar
este limite al permitir el sistema operativo el uso de mayor cantidad de memoria.
Aumentando memoria de scripts
En el caso de ejecutar los módulos utilizando los scripts de la plataforma, es decir, los .bat de la carpeta [o3]/bat para el caso de Windows o los
.shde la carpeta [o3]/sh para el caso de Linux, entonces en este caso la configuración se debe hacer en otro lugar. Por ejemplo, si se corre
O3Builder ejecutando el script [o3]/bat/Builder.bat entonces el cambio se debe hacer en el mismo Builder.bat, en la línea:
set PROPERTIES=%PROPERTIES% -mx200M
cambiando el número 200 por el que se considere más conveniente.
Si en el bat no se encuentra esta línea asi tal cual entonces buscar el texto -Xmx o -mx y modificar en ese lugar.
Otra posibilidad es el caso de tomcat.bat y tomcat.sh que no tiene esta configuración en ningún lugar. En el caso de tomcat.bat agregar una
línea:
set JAVA_OPTS=%JAVA_OPTS% -Xmx200m
después de la última línea similar.
En el caso de tomcat.sh, modificar la linea:
JAVA_OPTS="-Djava.awt.headless=true ...." ; export JAVA_OPTS
insertando después de JAVA_OPTS=" el texto -Xmx200m, asi:
JAVA_OPTS="-Xmx200m -Djava.awt.headless=true ...." ; export JAVA_OPTS
HowTo patch Jboss, problemas de consumo de memoria con Jboss
IMPORTANTE
Condiciones que justifican el patch
En entornos de trabajo donde el uso del portal es alto, y se nota una degradación del servicio y posterior caída del server.
Condiciones que pueden agravar el comportamiento, la reconstrucción de muchos cubos en forma seguida.
Soluciones al problema
Hay 2 patch desarrolados por Idesoft para tomcat, según si la versión de O3 es menor a 4.1.x o mayor o igual que 4.1.x.
Se debe de ser cuidadoso en no poner un patch por otro. Si su versión es 4.2.001 o posterior, el patch NO es necesario, ya esta incluido en la
distribución de O3.
Otras formas de detectar el problema
Desde el admserver ver que los cubos que quedan abiertos por mas de media hora luego que se cerraron la sesiones.
Ver el wiki "HowTo monitorear uso de memoria del Jboss" para aprender sobre cómo ver la memoria usada por jboss .
PARCHEAR EL JBOSS
1.
2.
3.
4.
5.
bajar el servidor jboss si lo tenemos corriendo
pararse en el directorio de instalción de O3
desde ahí ir al directorio jboss/server/default/deploy/jbossweb-tomcat55.sar
renombrar el archivo catalina.jar (ej #catalina.jar)
agregar el archivo catalina.jar nuevo. Precaución con la versión del patch según el O3 instaldo tener en cuenta que los nombre bajados
se les debe de renombrar como catalina.jar, no se debe de dejar el nombre con que se bajo.
6. reinicar el jboss
BAJAR LOS ARCHIVOS
Ir al tab de adjuntar y bajar el que corresponda a su versión
VERIFICANDO LA ACTUALIZACIÓN
Luego de conectarnos con cualquier aplicación al server en el log debería de aparacer
INFO [[/o3portal]] Tomcat 5.5.9, accessCount patch by Ideasoft
O3 How-to Optimizacion
O3 How-to: Optimización de los tiempos de carga de los Modelos Multidimensionales
Para optimizar los tiempos de carga con el builder ver este otro HowTo
O3 How-to: Optimización de la apertura de Modelos Multidimensionales
Este how-to se orienta a brindar información sobre la optimización de modelos multidimensionales para lograr mejor performance en las
consultas realizadas por los usuarios y en particular a la gestión de redundancia.
Cómo se mantiene la información en el cubo
O3 mantiene la información "agregada" por el último nivel de cada dimensión.
Veamos con un ejemplo que significa esto exactamente. Supongamos que se tiene un cubo con 3 dimensiones Fecha, Producto y Lugar, tal que
cada una cuenta con los siguientes niveles de dimensión:
Fecha: Fecha, Año, Mes, Día
Producto: Producto, Familia, Código
Lugar: Lugar, País, Zona, Ciudad
En este caso O3 mantiene la información agregada según los niveles de dimensión Día, Código y Ciudad. Es decir que ante la consulta ¿cuánto
se vendió el día 23/mar/2003 del producto con código "zapato0034" en la ciudad de "Montevideo"? O3 responde sin hacer ningún tipo de trabajo
extra de agregación, se puede decir que responde en un solo paso y solo con el esfuerzo de recuperar del cubo esa información ya disponible.
En cambio, ante la consulta ¿cuánto se vendió el día 23/mar/2003 de los productos de la familia "prendas de vestir" en la ciudad de
"Montevideo"?, O3 debe recuperar del cubo todas y cada una de la ventas realizadas el día 23/marzo/2003 de los productos pertenecientes a la
familia "prendas de vestir" en esa ciudad y luego agregarlas (hacer la suma) para obtener el resultado.
Algo de terminología
En el primer ejemplo se dice que O3 resolvió una consulta a nivel [Día,Codigo,Ciudad] (un niveles un vector de niveles de dimensión)
utilizando la información ya agregada a nivel [Día,Código,Ciudad], es decir que utilizó información al mismo nivel de agregación, de ahí que la
resolvió sin hacer agregación extra.
En el segundo ejemplo O3 resolvió una consulta de nivel [Día,Familia,Ciudad] utilizando información ya agregada a nivel [Día,Código,Ciudad]. En
este caso tuvo que hacer agregación extra porque el nivel de la consulta fue "mayor" ( * ) que el nivel de la información disponible.
( * )Se dice que un nivel [x0,....,xn] es mayor otro nivel [y0,..,yn] si xi >= yi para todo i de 0 a n. En este ejemplo, en la dimensión Producto, el
nivel de dimensión Familia es "mayor" ( ** ) que el nivel de dimensión Código.
( ** ) Los niveles de dimensión se numeran desde las hojas hacia la raíz comenzando en cero. Por ejemplo en el caso de la dimensión Producto:
Código tiene nivel 0, Familia 1, y Producto 3. Es en ese sentido que el nivel Familia es "mayor" que el nivel Código
¿Qué es la redundancia?
Volviendo a la segunda consulta de ejemplo, supongamos que la cantidad de productos de la familia "prendas de vestir" es del orden de decenas
o cientos de miles, y que además el día 23/mar/2003 en Montevideo se efectuaron ventas para todos ellos. Entonces, para responder a la
consulta O3 va a recuperar del cubo los cientos de miles de ventas hechas ese día en esa ciudad y las va a sumar para obtener la respuesta.
Dependiendo de la potencia de cálculo, la velocidad de disco, etc. la operación puede ser lenta. Si además es una consulta que se realiza con
frecuencia, luego O3 va a hacer la agregación cada vez. Entonces sería deseable que O3 mantuviera la información también agregada por el
nivel [Día,Familia,Ciudad], así podría responder a esa consulta en un solo paso y en un tiempo casi nulo. O3 puede agregar tal información extra
en los cubos, a tal proceso se le llama "agregado de redundancia al cubo". Al nivel[Día,Familia,Ciudad] se le llama nivel de redundancia, y al
nivel [Día,Código,Ciudad] se le llama nivel base (de redundancia).
Por defecto todo cubo tiene la información ya agregada por el nivel base.
En el ejemplo el cubo tiene información a nivel [Día,Código,Ciudad] (el nivel base) y a nivel de redundancia [Día,Familia,Ciudad]. Notar que la
información agregada según el nivel de redundancia [Día,Familia,Ciudad] es información redundante ya que se puede calcular a partir de la
información agregada según el nivel base [Día,Código,Ciudad], de ahí que al proceso se le llame "agregar redundancia". Notar también que el
cubo con redundancia debe tener mayor tamaño que el cubo sin ella.
¿Cómo se resuelven las consultas cuando hay niveles de redundancia?
Si se hace una consulta a nivel [Día,Familia,País] (Ej. ventas del día 24/dic/2003 de "prendas de vestir" en China) entonces la consulta se
resolverá agregando la información del nivel [Día,Familia,Ciudad] y no del nivel base [Día,Codigo,Ciudad]. Sucede que [Día,Familia,País] >=
[Día,Familia,Ciudad] y [Día,Familia, País] >= [Día,Codigo,Ciudad], pero evidentemente se resuelve mas rápido utilizando [Día,Familia,Ciudad].
Sucede que la cantidad de información agregada por [Día,Familia,Ciudad] es menor que la cantidad de información agregada del nivel
[Día,Codigo,Ciudad].
En la práctica esto último se puede inspeccionar utilizando Redundancy Manager. RD puede decir cuantas "tuplas" tiene un nivel y cuantas el
nivel a partir del cual este se construye.
Veamos este último ejemplo ilustrado con vectores indicando la posición (o altura) de cada nivel en la dimensión. La consulta es a nivel [0,1,2],
para resolverla se utiliza el nivel de redundancia [0,1,0] y no el nivel base [0,0,0].
Resumiendo, para resolver una consulta a nivel v se agrega la información del nivel de redundancia w tal que v >= w y w es el mayor nivel que
cumple eso.
Además, si v == w entonces la consulta se resuelve sin necesitad de hacer agregación extra.
Un ejemplo que muestra cuando un nivel de redundancia no sirve para resolver una consulta
Supongamos que la consulta es a nivel [2,0,1] (o sea [Año,Código,Zona]), ¿con qué nivel se resuelve? La respuesta es con el nivel [0,0,0], dado
que [2,0,1] >= [0,0,0] y no pasa lo mismo con el nivel de redundancia existente [0,1,0] donde la consulta es inferior en la dimensión Producto.
Si la consulta del ejemplo es lenta entonces se puede adicionar otro nivel de redundancia al cubo, por ejemplo [2,0,1], [1,0,1], [1,0,0] o [0,0,1]. El
primero logra resolver la consulta en un solo paso pero todos pueden lograr una mejora en el tiempo de resolución.
Algunas observaciones: primero, el cubo tiene ahora 2 niveles de redundancia además del nivel base, así que creció en tamaño, segundo, la
cantidad de niveles posibles a adicionar en el caso de que una consulta lo necesite es grande y es muy fácil que se haga una consulta a la cual
no le sirve ninguno. De hecho si se quiere que O3 responda a todas las consultas posibles en un solo paso, para un cubo con n dimensiones con
c1,c2... cn niveles se necesitarían c1*c2*...*cn niveles de redundancia. Por ejemplo, un cubo medio con 8 dimensiones de 1,2,3,3,4,3,2 y 2
niveles necesitaría 864 niveles de redundancia, dependiendo del tipo de información del cubo esto podría hacer aumentar el tamaño y tiempo de
construcción varias veces.
Conclusiones
El agregado de redundancia es una muy buena solución para mejorar los tiempos de consultas. Pero, adicionar redundancia a un cubo no es
tarea simple, al hacerlo se aumenta el tamaño y el tiempo de construcción del cubo.
En general, para lograr una buena mejora en los tiempos se debe:
1- Conocer los datos: sabiendo de antemano qué consultas son las más frecuentes y de ellas cuáles son las más lentas
2- Utilizar la información brindada por los cubos de estadísticas
3- Utilizar Redundancy Manager en forma sistemática para agregar niveles de redundancia, viendo en cada caso cuanto se mejora la relación
entre el tamaño de información del nuevo nivel de redundancia y el nivel en el cual éste se apoya, si el nuevo nivel no mejora la relación
entonces no se adiciona
Nota: para que la Redundancia tenga sentido se necesita que la mayor cantidad de dimensiones posible tenga por lo menos mas de un nivel de
dimensión, solo en ese caso la redundancia tiene un efecto positivo.
HowTo Optimizar los tiempos de construcción en el builder y designer
Consideraciones previas
¿Cuando es necesaria esta técnica?
Esta técnica lo que mejora son los tiempos de construcción, no los relacionados con los tiempos de consultas que luego se hagan en O3, para
este tipo de optimización ver el siguiente HowTo
Por lo tanto esta optimización es adecuada cuando tenemos cubos cuya carga demora varias horas, estos son cubos con varios millones de
tuplas.
Resulta obvio también la necesidad en estos casos de que la máquina que construye sea adecuada:
tenga la memoria suficiente (2 o 3 Gb de RAM)
procesador rápido (cuanto más rápido mejor)
OPTIMIZACIÓN
¿En que consiste la optimización de carga de datos?
Consiste en avisarle de antemano al builder y/o designer que los datos van a ingresar ordenados por alguna de las dimensiones. Esto lleva a
que O3 haga un mejor aprovechamiento de la cache de cubos.
¿Qué dimensiones usar para ordenar los datos?
En principo puede ser cualquiera, pero para lograr mejores resultados debemos elegir aquellas que distribuyan mejor la información, por eso lo
más habitual es usar la dimensión fecha.
¿Cómo lo hago?
Veamos esto con un ejemplo:
Supongamos un cubo con 4 dimensiones: Fecha, Zonas, Vendedores, Artículos
La numeración de las dimensiones sería la siguiente :
0
Fecha
1
Zonas
2
Vendedores
3
Artículos
A su vez supongamos que la dimensión Fecha tiene los siguientes niveles : Año, Mes, Día
la numeración de los niveles es:
0
RAIZ
1
Año
2
Mes
3
Día
y por último supongamos que los datos vienen ordenados en la consulta por fecha/día, esto lo logramos por ej con un ORDER BY en la
cláusula SQL, si es un archivo de texto, deberemos ordenarlo al momento de generarlo por la columna necesaria.
En el builder.sh buscamos la línea
# Add Application System Properties
PROPERTIES="$PROPERTIES -mx200M"
y agregamos las siguientes líneas:
# Add Application System Properties
PROPERTIES="$PROPERTIES -mx200M"
PROPERTIES="$PROPERTIES -Do3.split.dimension=0"
PROPERTIES="$PROPERTIES -Do3.split.dimension.level=3"
PROPERTIES="$PROPERTIES -Do3.split.dimension.redundancy=true"
En el caso del builder.bat buscar la línea:
rem Add Application System Properties
set PROPERTIES=%PROPERTIES% -mx200M
y agregamos las siguientes líneas:
rem
set
set
set
set
Add Application System Properties
PROPERTIES=%PROPERTIES% -mx200M
PROPERTIES=%PROPERTIES% -Do3.split.dimension=0
PROPERTIES=%PROPERTIES% -Do3.split.dimension.level=3
PROPERTIES=%PROPERTIES% -Do3.split.dimension.redundancy=true
Debido a que alteramos estas propiedades, es buena idea cambiar el nombre del builder.sh/builder.bat a efectos de personalizarlo para ese cubo
en especial y dejar el builder.sh/builder.bat sin tocar para las cargas generales que no necesiten de este procedimiento.
Los mismos cambios pueden realizarse para el componente O3Designer, modificando los respectivos designer.sh/designer.bat
O3 Redundancy Manager
Cómo agregar redundancia con Redundancy Manager
RedundancyManager es una aplicación que se ejecuta en línea de comandos y se utiliza para agregarle niveles de redundancia a un cubo
construído previamente con O3Builder u O3Designer.
El principal cometido de esta aplicación es permitir agregar la redundancia en un paso separado al de la construcción del cubo, esto permite
repetir el proceso las veces que sea necesario hasta lograr optimizar el cubo sin necestiad de perder tiempo en reconstruirlo. Esta aplicación
despliega además información util sobre los niveles de redundancia. Por ejemplo, muestra la cantidad de tuplas que tiene un nivel y sobre qué
nivel fue construído, lo que permite tener una idea de si cierto nivel de redundancia mejora o no la performance del cubo
Se encuentra en la carpeta bat(o sh) y se llama RedunMgr.bat.
Se ejecuta pasandole como parametro el cubo y el comando de lo que se le quiere hacer. Ejecutandolo sin parametros muestra un listado de
todos los comandos que acepta.
Los niveles de redundancia primero se planifican, o sea que se agregan niveles al cubo para que después con otro comando realmente se
construyan.
Ejemplo 1
RedunMgr -cmnd=add -level="1,1,1,1,1" C:\IdeaSoft\o3\installations\O3_3.3.000\files\Demo.cube -debug
planifica el nivel de redundancia [1,1,1,1,1] (o sea, nivel [Quarter,Line,Customer Type,Line,Team,Country]) en el cubo Demo.cube
Ejemplo 2:
RedunMgr -cmnd=show C:\IdeaSoft\o3\installations\O3_3.3.000\files\Demo.cube -debug
Despligua en pantalla toda la informacion de redundancia del cubo Demo.cube
El resultado del comando es:
.....
Notificaci¾n: Phase: 0
Notificaci¾n: Base Level: 0 [ 0, 0, 0, 0, 0 ]
Notificaci¾n: RedundancyLevel: 1 - [ 1, 1, 1, 1, 1 ]
Generation: 5 dependOn: [ 0 ]
Measures: [ T, T, T, T, T, T ] Base Measures: [ F, F, F, F, F, F ]
Updated : [ null ] Empty: [ F, F, F, F, F, F ]
Notificaci¾n: Status: planned
.....
El log muestra que existe un nivel de redundancia de nombre "1" definido como [1,1,1,1,1] (fue el que se agrego en el Ejemplo 1). El nivel "1"
depende de otro nivel de redundancia llamado "0" (el nivel de redundancia "0" existe en el cubo aunque el este no tenga redundancia, es el
llamado nivel base, sobre el cual se resuelven todas las consultas del cubo cuando no tiene redundancia)
El ninvel de redundancia "1" esta planificado.
Ejemplo 3
RedunMgr -cmnd=updateAll C:\IdeaSoft\o3\installations\O3_3.3.000\files\Demo.cube -debug
Construye todos los niveles de redundancia que esten planificados.
Después de ejecutarlo el comando "show" muestra lo siguiente:
Notificaci¾n: Phase: 0
Notificaci¾n: Base Level: 0 [ 0, 0, 0, 0, 0 ]
Notificaci¾n: RedundancyLevel: 1 - [ 1, 1, 1, 1, 1 ]
Generation: 5 dependOn: [ 0 ]
Measures: [ T, T, T, T, T, T ] Base Measures: [ F, F, F, F, F, F ]
Updated : [ T, T, T, T, T, T ] Empty: [ F, F, F, F, F, F ]
Notificaci¾n: Status: running
Notificaci¾n: Index ID: 1 TuplesCount: 518
Muestra dos cosas, el nivel está calculado (estado running) y tiene 518 tuplas. Esto último significa que en el peor caso para una consulta
que se resuelva utilizando ese nivel de redundancia se recorreren 518 tuplas, esto es un indicador de la performance que tienen las
consultas para resolverse con ese nivel de redundancia.
Otras consideraciones:
1- No se pueden remover niveles de redudancia (a pesar de que aparece la opción en la ayuda del comando), solo se pueden suspender, pero la
informacion sigue ahí (el tamaño del cubo se conserva)
2- El comando showCover muestra información sobre el nivel de redundancia "0" (nivel base) además de la información de los otros niveles de
redundancia. Esto sirve para saber cuantas tuplas tiene el cubo.
Resultado ejemplo de ejecutar showCover:
Notificaci¾n: Cover:
Notificaci¾n: RedundancyLevel: 0 - [ 0, 0, 0, 0, 0 ]
Generation: 0 dependOn: [ ]
Measures: [ T, T, T, T, T, T ] Base Measures: [ T, T, T, T, T, T ]
Updated : [ T, T, T, T, T, T ] Empty: [ F, F, F, F, F, F ]
Notificaci¾n: Status: running
Notificaci¾n: Index ID: 0 TuplesCount: 1270
Notificaci¾n:
Notificaci¾n: RedundancyLevel: 1 - [ 1, 1, 1, 1, 1 ]
Generation: 5 dependOn: [ 0 ]
Measures: [ T, T, T, T, T, T ] Base Measures: [ F, F, F, F, F, F ]
Updated : [ T, T, T, T, T, T ] Empty: [ F, F, F, F, F, F ]
Notificaci¾n: Status: running
Notificaci¾n: Index ID: 1 TuplesCount: 518
Por mas información sobre Redundancia referirse al manual de Desarrollador en la sección de "Optimización de Consultas"
Single Sign-On
Single Sign-On en O3
La funcionalidad de Single sign-on (login único) entre los diferentes módulos web de O3 (O3Portal, EPortal, Report) se realiza mediante CAS.
Secciones
Secciones
Problemas con CAS ejecutando detrás de un firewall
Single Sign On de O3 con aplicaciones existentes — Este documento presenta una forma de integración con aplicaciones
existentes (que realizan una validación previa del usuario) para que éstas redirijan a O3 incluyendo información de
autenticación, que permita que el usuario no deba ingresar nuevamente las credenciales al acceder a los diferentes
módulos web de O3.
Problemas con CAS ejecutando detrás de un firewall
Problemas con CAS ejecutando detrás de un firewall
Cuando se utiliza O3 Portal detrás de un firewall puede ocurrir que luego de la pantalla de login aparezca una pantalla en blanco, esto es
causado por un problema en el módulo de validación de CAS, que ocurre cuando el servidor no se puede conectar a si mismo con el nombre de
host ingresado por el usuario en la URL del navegador.
Es decir que esto ocurre si el usuario accede a 'http://www.company.com/o3portal' y el servidor O3 no puede acceder al host
www.company.com en el puerto 80.
Este problema se resuelve cambiando la declaración del filtro de CAS, en el archivo
<O3>/jboss/server/default/deploy/gserver/0o3.ear/o3portal.war/WEB-INF/web.xml, cambiando el valor del parámetro validateUrl como se muestra
a continuación:
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>
<param-value>http://localhost:8080/cas/proxyValidate</param-value>
</init-param>
donde 8080 debe ser reemplazado por el puerto en el que está ejecutando Tomcat.
Single Sign On de O3 con aplicaciones existentes
Single Sign On de O3 con aplicaciones existentes
NOTA
La funcionalidad descrita en este documento está disponible a partir de la versión 5.4.0-22
Introducción
Si bien una forma de integrarse con el Single Sign On de O3 es la adaptación de la aplicación existente para que utilice el CAS de O3, en
muchas oportunidades esto es demasiado complejo y se requiere una alternativa más simple.
Este documento presenta una forma de integración con aplicaciones existentes (que realizan una validación previa del usuario) para que éstas
redirijan a O3 incluyendo información de autenticación, que permita que el usuario no deba ingresar nuevamente las credenciales al acceder a
los diferentes módulos web de O3.
Single Sign On de aplicaciones externas con los módulos web de O3
Este mecanismo permite evitar la autenticación en los módulos web de O3, considerando que el usuario ya se encuentra autenticado en otra
aplicación (aplicación X, de ahora en más).
Características de la implementación
Se utiliza un mecanismo de SSO basado en tickets.
El ticket debe ser generado por la aplicación en la que se autentica el usuario y almacenado en una base de datos. El único
requerimiento de dicha base de datos es que sea accesible por el servidor O3 a través de un driver JDBC.
Los usuarios deben estar definidos en los dos sistemas (en la aplicación X y en O3). Dependiendo del repositorio de usuarios que la
aplicación X utilice, se podrá integrar a O3 (por ejemplo LDAP), evitando tener que mantener la doble definición de usuarios.
Funcionamiento del mecanismo de SSO
1. El usuario ingresa a la aplicación X, y en el momento que desea acceder al O3Portal se genera el ticket y se almacena en la base de
datos (más adelante se propone el esquema de la tabla a utilizar).
2. Cuando la aplicación genera un link al O3Portal, éste lleva el ticket como argumento de la URL
3. O3 recibe el ticket y consulta la base de datos, para validar el ticket y obtener el nombre del usuario conectado
4. O3 es quien elimina de la base de datos el ticket inmediatamente después de ser validado el usuario.
Base de datos
Debe existir una tabla llamada SSO_TICKETS con los siguientes campos:
Campo
Tipo
Descripción
Ticket
Varchar(100)
Ticket_TS
Timestamp
Fecha y hora de creación del ticket
UserName
Varchar(50)
Login del usuario conectado
para MSsql server el tipo debe ser datetime
Expiración
Se utiliza el campo Ticket_TS para la validación del Ticket, es decir cuando O3 valida el Ticket además de verificar que existe un registro en la
tabla, se asegura de que el tiempo de vida no sea mayor a un valor predeterminado, por defecto de un día.
Esto se realiza para evitar que si no se eliminó correctamente un ticket no se permita el ingreso por tiempo indeterminado. El valor del tiempo de
expiración se puede modificar a través de un parámetro.
URL generada desde la aplicación externa
La URL generada por la aplicación para redirigir a O3 debe llevar el parámetro "_externalTicket" con el valor del ticket generado por la aplicación
y almacenado en la base de datos.
Por ejemplo:
http://localhost:8080/o3portal?_externalTicket=12345678
http://localhost:8080/eportal/group/default?_externalTicket=12345678
Características que debería cumplir el ticket generado por la aplicación
El ticket puede ser cualquier texto pero es recomendable:
Que sea único, en general se utiliza la hora de la máquina como uno de sus componentes para garantizar esa unicidad
Que no sea fácil de generar, por ejemplo que no sea un número secuencial, que permitiría "adivinar" un valor válido
Un ejemplo de una clase Java que puede ayudar a esta implementación es java.rmi.server.UID
Configuración
Configuración del acceso a base de datos en O3
Debe configurarse la base de datos que se utilizará para realizar la validación de los tickets.
Ejemplo de DataSource para una base Postgres (jboss\server\default\deploy\gserver\ticket-ds.xml).
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<local-tx-datasource>
<jndi-name>TicketDS</jndi-name>
<connection-url>jdbc:postgresql://localhost:5432/ticket</connection-url>
<driver-class>org.postgresql.Driver</driver-class>
<user-name>postgres</user-name>
<password>postgres</password>
<metadata>
<type-mapping>PostgreSQL 7.2</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>
En caso de que se trate de otra Base de Datos se debe de copiar el jar del driver en O3/jboss/server/default/lib y configurar el datasource con la
url, driverClass, usuario y password adecuados.
Script de creación de la tabla para Postgres
CREATE TABLE sso_tickets
(
ticket character varying(100) NOT NULL,
ticket_ts timestamp without time zone NOT NULL,
username character varying(50) NOT NULL,
CONSTRAINT pk_sso_tickets PRIMARY KEY (ticket)
)
Configuración de SSO en O3Portal
Se debe de configurar el filtro de CAS para habilitar la recepción y validación de tickets desde aplicaciones externas.
Para esto se deben descomentar las siguientes líneas en el archivo jboss/server/default/deploy/gserver/0o3.ear/o3portal.war/WEB-INF/web.xml
<init-param>
<param-name>ticket.validator</param-name>
<param-value>com.ideasoft.cs.ejb.ticket.DbTicketValidator</param-value>
</init-param>
<init-param>
<param-name>dbticket.datasource</param-name>
<param-value>java:/TicketDS</param-value>
</init-param>
Nombre de
atributo
Descripción
ticket.validator
El nombre de la clase Java utilizada para validar el ticket, para la validación contra base de datos
presentada aquí debe utilizarse el valor presentado en el ejemplo
dbticket.datasource
Nombre JNDI del DataSource donde se declara el acceso a la base de datos que tiene la tabla con los
tickets
dbticket.expiration
Tiempo para la expiración de los tickets expresada en segundos
Configuración de SSO para EPortal
Descomentar las siguientes propiedades del archivo jboss/server/default/deploy/liferay.war/WEB-INF/classes/portal-ext.properties:
o3.autologin.validator=com.ideasoft.cs.ejb.ticket.DbTicketValidator
dbticket.datasource=java:/TicketDS
Valor por
Defecto
86400 (un
día)
Se puede especificar también la propiedad dbticket.expiration de la misma manera que para la configuración de O3Portal
How To Eportal
Ayudas y explicaciones de cómo realizar operaciones con el componente Eportal.
Guía de administración de Liferay
HowTo Agregar Mapas de Google
HowTo cambiar apariencia de la página de bienvenida
HowTo cambiar la base hypersonic por otra base
HowTo crear una nueva comunidad
HowTo crear una nueva organización
HowTo Crear usuario administrador en una comunidad del Enterprise Portal
How To definir administrador por comunidad
HowTo Definir permisos sobre páginas en ePortal
HowTo donde almacena los documentos e imágenes eportal
HowTo drill across en eportal
HowTo ePortal y localhost
HowTo exportar e importar una comunidad en eportal
HowTo importar páginas de otra comunidad
HowTo instalar nuevo tema de apariencia
HowTo Instalar nuevo theme Default en ePortal
HowTo Instalar plantillas en el Enterprise Portal
HowTo Login Anónimo en ePortal
HowTo ocultar el panel de control a usuarios anónimos
HowTo ocultar menuItem Páginas públicas (0) en eportal
HowTo personalizar una comunidad en eportal
HowTo Quitar Mi Comunidad en ePortal
Organizaciones vs. Comunidades
Guía de administración de Liferay
Contenido
1.
2.
3.
4.
5.
6.
7.
8.
9.
Introduction
Initial Setup
Configuration
Liferay Collaboration Suite
Advanced Liferay Configuration
Enterprise Configuration
Maintaining A Liferay Portal
Appendix: Documentation License
Colophon
Descargar documento: liferay-administrator-guide-5.2.pdf
HowTo Agregar Mapas de Google
Esta página describe los pasos para incorporar portlets que integran Mapas de Google con Datamarts en O3 Enterprise Portal.
Pre-requisitos
Como condición previa es necesario disponer de:
Licenciamiento O3 Enterprise Edition
Al menos un datamart publicado en el servidor O3 con una dimensión de ubicación gegráfica definida. En el cual se disponga de una
vista tambien publicada en el servidor, cuyos elementos de un nivel de la mencionada dimensión geográfica permitan referenciarse en
Google Maps
Una cuenta de Google.
Como ejemplo, basta con un datamart con un nivel de una dimensión cuyas etiquetas sean :
Las Piedras, Canelones, Uruguay
La Paz, Canelones, Uruguay
Toledo, Canelones, Uruguay
etc
El nivel de detalle, ya sea países, ciudades, localidades, calles, etc es relativo a las necesidaes de análisis requeridas. Incluso podrían utilizarse
las referencias geodésicas a un punto en el planeta si se buscara la ubicación exacta. Por ejemplo, los valores (-34.908951,-56.139643)
identifican la ubicación exacta de IdeaSoft en Montevideo, referidas a las coordenadas: -34° 54' 32.22", -56° 8' 22.71" .
Pasos a seguir
Los pasos para incorporar un nuevo portlet en O3 Enterprise Portal son:
1 - Situarse en la página donde se requiere agregar el mapa, seleccionar Añadir Portlet de categoría Mashup -> Grid Portlet
Allí se indica una vista de tipo Tabla del datamart O3 que haga referencia en el eje vertical a la dimensión geográfica y en el eje horizontal una
columna con el valor de la medida que se desea visualizar en el mapa. La vista agregada se visualizará en forma similar a un típico portlet O3
View Portlet.
2- Obtener un código de uso del Google Maps API en: http://code.google.com/intl/es-UY/apis/maps/signup.html
Allí se explican las condiciones de uso, las cuales no exigen pago para una utilización básica.
Se debe indicar la URL donde va a ser utilizada: http://<nombreServidorO3>:<puertoO3>
por ejemplo: http://serv01:8080 y a continuación se pide el ingreso con la cuenta google para finalmente obtener la clave
3 - Añadir un nuevo portlet, en esta oportunidad de categoría Mashup -> Google Maps Mashup. Se pide el ingreso de la clave obtenida y al
aceptar se visualiza el mapa.
HowTo cambiar apariencia de la página de bienvenida
Contexto
Personalizar la apariencia del portal.
Procedimiento
Para cambiar la apariencia de la página de bienvenida, es necesario modificar la página pública Welcome, que se encuentra bajo la comunidad
Guest.
Cambiar tema:
1.
2.
3.
4.
5.
6.
Dirigirse a Panel de Control de eportal.
Comunidades -> Acciones -> Administrar páginas
Seleccionar la pestaña Páginas públicas.
Seleccionar la página Welcome
Seleccionar pestaña Apariencia.
Cambiar tema.
Cambiar imagen:
1.
2.
3.
4.
5.
6.
Dirigirse a Panel de Control de eportal.
Comunidades -> Acciones -> Administrar páginas
Se desplegará un menú. Hacer clic en la solapa Configuración
Hacer clic en la solapa Logo
Hacer clic en Examinar y adjuntar el archivo con la imagen seleccionada
Finalmente hacer clic en Guardar.
HowTo cambiar la base hypersonic por otra base
Contexto
En ambientes de producción se recomienda utilizar una Base de Datos para almacenar información de configuración de componentes de O3,
tales como el Enterprise Portal, la configuración del Servidor y los usuarios.
La Base de Datos Hypersonic que va preconfigurada con O3 en su distribución, tiene por finalidad permitir una rápida puesta en funcionamiento
de la instalación, tanto para aprendizaje, demostración y hasta desarrollo, pero para entornos de producción se recomienda la configuración de
otra base de datos.
Este HowTo describe como se hace el cambio de Base de Datos del Enterprise Portal (Liferay).
Podemos distinguir 2 situaciones:
Ya tenemos armado un sitio usando hypersonic y queremos migrar a otra base.
No tenemos nada armado y queremos desde el vamos usar otra base
Ambas situaciones tienen pasos en común y pasos específicos para cada situación
1- Elección de la base de datos
Liferay funciona con varias bases de datos, nostros la hemos probado con exito en:
MS-SQL
MySQL
Postgres
Oracle
pero hay otras posibildades de Bases, en http://downloads.sourceforge.net/lportal/liferay-portal-sql-5.1.2.zip se puede ver los tipos soportado de
acuerdo a los scripts de creación de bases.
Una vez que hayamos elegido la base, deberemos crear un base nueva y un usuario que sea dueño de la base o con permisos suficientes.
A los efectos de este HowTo supondremos que usaremos MySQL, que creamos una base que se llamará liferay y un usario liferay con una
password liferaykey
El usuario liferay tiene solo derechos de
SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, CREATE VIEW, SHOW VIEW,
CREATE ROUTINE, ALTER ROUTINE, EXECUTE sobre la base liferay
2- Exportar la comunidad
Si ya tenemos armado una/s comunidad/es debemos de exportarlas para luego importarlas en el eportal con la nueva base de datos
1.
2.
3.
4.
5.
6.
7.
Loguearse como el administrador.
Ir a Panel de Control.
En la sección Portal ir a Comunidades.
En el botón Acciones elegir Administrar Páginas.
Eligiendo Páginas Públicas o Privadas, según el caso, ir a Exportar/Importar, guardar el archivo .lar clieando el botón Exportar.
Repetir el proceso para cada comunidad.
Bajar el Jboss al terminar de exportar la/s comunidad/es.
3- Cambiando el datasource de liferay
Es necesario indicarle a liferay que usar para conectarse, para ello copiamos del directorio de ejemplos el datasource correspondiente a mysql.
cp <o3>/jboss/docs/examples/jca/mysql-ds.xml <o3>/jboss/server/default/deploy/liferay-mysql-ds.xml
Luego borramos el archivo <o3>/jboss/server/default/deploy/liferay-hsqldb-ds.xml y editamos
<o3>/jboss/server/default/deploy/liferay-mysql-ds.xml
Veremos algo como esto:
<datasources>
<local-tx-datasource>
<jndi-name>MySqlDS</jndi-name>
<connection-url>jdbc:mysql://mysql-hostname:3306/jbossdb</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>x</user-name>
<password>y</password>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
<!-- should only be used on drivers after 3.22.1 with "ping" support
<valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLValidConnectionChecker</valid-connecti
-->
<!-- sql to call when connection is created
<new-connection-sql>some arbitrary sql</new-connection-sql>
-->
<!-- sql to call on an existing pooled connection when it is obtained from pool MySQLValidConnectionChecker is preferred for newer drivers
<check-valid-connection-sql>some arbitrary sql</check-valid-connection-sql>
-->
<!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml -->
<metadata>
<type-mapping>mySQL</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>
cambiamos
<jndi-name>MySqlDS</jndi-name>
<connection-url>jdbc:mysql://mysql-hostname:3306/jbossdb</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>x</user-name>
<password>y</password>
por
<jndi-name>jdbc/LiferayPool</jndi-name>
<connection-url>jdbc:mysql://localhost:3306/liferay</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>liferay</user-name>
<password>liferaykey</password>
Recuerde
Recordar que usamos una base que se llama liferay, un usuario liferay
4- Iniciar el Jboss
Una vez iniciado el Jboss, Liferay se encargara de crear las tablas en la base y precargarle algunos datos.
5- Abrir el eportal
Colocamos en el navegador web http://localhost:8080/eportal y veremos algo como esto
Debemos loguearnos con el usuario [email protected] (sugerido) y la password test
veremos la siguiente pantalla
6- Recomponiendo el eportal
ATENCIÓN
No saltearse lo pasos que a continuación se detallan, o se corre el riesgo de no poder volver a entrar al eportal
Agregando el usuario admin
Vamos a al menú de opciones y elegimos Control panel (Panel de Control)
Una vez en el Panel de control vamos a buscar a la izquierda la sección Portal
Elegimos Users, luego Add (botón verde arriba al medio) y completamos como en la foto y apretamos salvar (botón a la derecha)
Notar que deben coincidir el screen name con el nombre de logueo en O3, en este caso admin. Pero para otros usuarios se debe mantener
que los nombres sean iguales.
Luego ir a roles como muestra la imagen
Apretamos el botón con una cruz verde (Selec) y se despliega una pantalla en la que podemos selecionar el rol administrator
Luego volvemos a salvar (botón derecho abajos)
Si queremos le podemos sacar el rol powerUser (no olvidar salvar luego de sacarlo!)
Con esto ya tenemos a admin como administrador del eportal.
Agregando portlet de loguin en la comunidad guest
Arriba a la derecha debe haber un link que dice back to guest(volver a guest), lo cliqueamos y estaremos en la pantalla de inicio.
Acá debemos sacar los 2 portlets y agregar uno nuevo, para ello vamos de nuevo al menú y elegimos agregar aplicación (add application)
elegimos el portlet que esta en indefinidos (Undefined) Eportal Portlet y lo agregamos.
Sacando el usuario test
Nos deslogueamos y entramos con el usuario admin.
Una vez logueados, vamos al menú->panel de control->usuarios
Apretamos el botón de acciones correspondiente al usario test y lo desactivamos.
Luego vamos a buscar (ver forma avanzada) y elegimos los usuario que no están activos.
Nos vuelve a aparecer test, botón acciones->borrar.
Creando la comunidad
En el menú de la izquierda buscamos comunidades
Luego en el botón verde con una cruz le decimos agregar, completamos el formulario.
Agregando(importando) a la comunidad lo exportado al principio.
En la lista de Comunidades elegimos la creada y en el botón de acciones->manejar páginas.
Luego elegimos privadas y exportar/importar, a continuación importar,
seleccionamos el archivo y no cambiamos ninguna de las opciones.
Apretamos ver paginas y listo!!
Migrar Liferay a Oracle
Contexto
La migración a una base de datos Oracle es un poco más complicada.
Recomendamos leer este link http://www.atlassian.com/software/jira/docs/v3.13/databases/oracle.html. Luego decidan si quieren o no usar
Oracle.
El procedimiento es para plataformas GNU/Linux
Procedimiento
1. Crear en Oracle un usuario y base de datos vacía, el usuario debe tener permisos suficientes para crear tablas (permisos de DBA)
2. Bajar o asegurarse que esté bajo el JBoss.
3. Copiar el convert.sh en <o3>/jboss/server/default/data/hypersonic
El script solo corre en plataformas linux.
4. Correr el script pasandole como parámetro el nombre del la base
./convert.sh lportal.script
Esto debería dejarnos un archivo portal-data-sample.vm en la misma carpeta hypersonic
5. Editar el archivo generado y borrarle las primeras líneas hasta llegar a los INSERT. Salvar el archivo.
6. Crear el siguiente esquemas de carpetas
<o3>/jboss/server/default/deploy/liferay.war/WEB-INF/classes/com/liferay/portal/tools/sql/dependencies/
7. Copiar el archivo generado por el script convert.sh a la carpetad dependencies.
cd <o3>/jboss/server/default/data/hypersonic/
mv portal-data-sample.vm
<o3>/jboss/server/default/deploy/liferay.war/WEB-INF/classes/com/liferay/portal/tools/sql/dependencies/
8. Cambiar el data source de liferay para que apunte a Oracle
Copiar el oracle-ds.xml de ejemplo que se adjunta y modificarle el usuario, password y datos de conexión
9. Modificar el archivo portal-ext.properties que se encuentra en <o3>/jboss/server/default/deploy/liferay.war/WEB-INF/classes
Agregar al final
schema.run.enabled=true
schema.run.minimal=false
hibernate.jdbc.batch_size=0
10. Si se usa oracle 11 agregar en el partal-ext.properties
hibernate.dialect = org.hibernate.dialect.Oracle10gDialect
hibernate.connection.release_mode=auto
11. Levantar el JBoss.
12. Verificar que se crearon y completaron con datos las tablas
HowTo crear una nueva comunidad
Contexto
Las comunidades son un mecanismo que permiten agrupar usuarios de acuerdo a características comunes en cuanto a la información que
manejan, los intereses que tienen o el tipo de trabajo que desempeñan.
De esta forma es posible definir comunidades a las cuales luego se afilian los usuarios pudiendo de esta forma compartir las páginas definidas
dentro de la comunidad.
Definiendo una nueva comunidad
La tarea de definición y mantenimiento de comunidades la realiza el Administrador el cual se identifica con la cuenta admin.
1.
2.
3.
4.
Ingresar al portal con la cuenta de Administrador (admin).
Dirigirse a Panel de Control->Comunidades.
Presionar el botón de Añadir.
Indicar el nombre de la comunidad y opcionalmente una descripción.
El tipo de comunidad indica el nivel de seguridad que existe para afiliarse a la comunidad. En este caso Abierto es la opción adecuada.
5. Verificar que la comunidad está activa.
6. Presionar el botón de Guardar para crear la comunidad.
Este paso debería mostrar la nueva comunidad creada en la lista de las comunidades existentes:
Asignando Miembros a una Comunidad
Una vez creada la comunidad, es necesario asignarle miembros para que puedan acceder a las páginas que dentro de ella se definan.
El usuario que creó la comunidad queda automáticamente perteneciente a la comunidad bajo el rol de Comunity Owner.
1. En la lista de comunidades disponibles, presionar el botón de Acciones para dicha comunidad.
Esto despliega la lista de acciones posibles:
2.
3.
4.
5.
Seleccionar la acción de Asignar Miembros.
Seleccionar el botón de Usuarios Disponibles.
Dentro de la lista desplegada, seleccionar el o los usuarios deseados.
Presionar el botón de Actualizar asignaciones.
HowTo crear una nueva organización
Contexto
Las organizaciones son un mecanismo que permite agrupar a los usuarios en una estructura jerarquica.
Representan la estructura lógica de la empresa o institución donde se utiliza el portal. Tiene una estructura jerárquica con tantos niveles como se
desee.
Ejemplos: departamentos, grupos, divisiones, empresas asociadas, proveedores, etc.
Las organizaciones se dividen en 2 tipos:
Organización normal: representa la estructura jerárquica de la compañía.
Localización: representa lugares físicos donde opera la compañía.
Definiendo una nueva Organización normal
La tarea de definición y mantenimiento de organizaciones la realiza el Administrador el cual se identifica con la cuenta admin.
1.
2.
3.
4.
5.
6.
Ingresar al portal con la cuenta de Administrador (admin).
Dirigirse a Panel de Control->Organizaciones.
Presionar el botón de Añadir.
Indicar el nombre de la organización.
Indicar el tipo de Organización normal.
Presionar el botón de Guardar para crear la organización.
Definiendo una nueva Localización
La tarea de definición y mantenimiento de localizaciones la realiza el Administrador el cual se identifica con la cuenta admin.
1.
2.
3.
4.
5.
6.
7.
Ingresar al portal con la cuenta de Administrador (admin).
Dirigirse a Panel de Control->Organizaciones.
Presionar el botón de Añadir.
Indicar el nombre de la organización.
Indicar el tipo de Localización.
Seleccionar un País, y opcionalmente una Región.
Presionar el botón de Guardar para crear la organización.
HowTo Crear usuario administrador en una comunidad del Enterprise Portal
Contexto
La instalación de O3 Performance Suite ofrece dos usuarios definidos por defecto, uno de los cuales tiene el rol de ser administrador del servidor
de O3. En el componente Enterprise Portal, este usuario es también administrador y puede crear nuevas comunidades y desarrollar así los
componentes del portal que desee.
Las organizaciones asignan responsabilidades a diferentes actores, por lo que en ocasiones es necesario separar el rol del administrador del
servidor de O3, de aquél que puede administrar una comunidad en particular del Enterprise Portal. También es posible que distintas
comunidades sean desarrolladas y administradas por diferentes usuarios.
Para el componente Enterprise Portal, existen también un conjunto de roles predefinidos, que poseen permisos especiales para administrar
comunidades. Un ejemplo es el rol Administrator que puede crear usuarios, roles, comunidades, asignar derechos sobre las mismas a otros
usuarios, agregar portlets, etc. Este es el rol del usuario admin (usuario por defecto disponible al instalar O3).
A continuación se describen los pasos necesarios para otorgar los permisos necesarios a un usuario que no pertenece al Rol Administrador, para
que pueda desarrollar la comunidad deseada.
Asignación de permisos para administrar portlets en una comunidad
1. Definir el usuario en el Enterprise Portal.
2. Definir un Rol de tipo Regular y asignarle dicho rol al usuario deseado. Los pasos que siguen definen cómo darle a este rol permisos
para administrar portlets en una determinada comunidad:
3. Desde la página de administración del nuevo rol, seleccionar la opción "Define Permissions" que se encuentra en el menú "Action".
4. Presionar el boton "Add Portlet Permission": aparecerá la lista de todos los
portlets para los cuales podrá administrar este rol. Repetir las siguientes acciones para cada uno de los portlets que se desean
administrar a través del nuevo rol:
a. Buscar y seleccionar el portlet deseado
b. Para cada una de las 3 acciones posibles sobre el portlet, seleccionar el permiso correspondiente. Las acciones posibles son:
i. View
ii. Preferences
iii. Configuration
c. Indicar si el permiso es de tipo global o es para una determinada comunidad. Para definir le permiso global se debe seleccionar
la opción "Enterprise". Para identificar una determinada comunidad se debe:
d. seleccionar "community" y seleccionar la comunidad deseada
How To definir administrador por comunidad
Contexto
Definir un usuario con las mismas características del admin, pero únicamente para la comunidad a la que pertenece.
Proceso
El procedimiento se aplica en las versiones O3 5.1.151 y anteriores.
1. Definir un nuevo usuario en eportal, o utilizar uno previamente definido.
2. Agregar usuario como miembro de una comunidad.
Comunidades disponibles -> Acciones -> Asignar miembros
3. Asignar al usuario el rol Community Administrator.
Comunidades disponibles -> Acciones -> Asignar roles de usuario
4. Seleccionar Community Administrator.
5. Buscar entre los usuarios disponibles y seleccionar el que se desea. Luego guardar presionando el botón Actualizar asignaciones.
6. Asignar al usuario el rol Community Owner.
Comunidades disponibles -> Acciones -> Asignar roles de usuario
7. Seleccionar Community Owner.
8. Buscar entre los usuarios disponibles y seleccionar el que se desea. Luego guardar presionando el botón Actualizar asignaciones.
El procedimiento se aplica en las versiones O3 5.2.004 y posteriores.
1. Definir un nuevo usuario en eportal, o utilizar uno previamente definido.
Dirigirse a Panel de Control - Menú Usuarios
2. Agregar usuario como miembro de una comunidad.
Dirigirse a Panel de Control - Menú Comunidades -> Acciones -> Asignar miembros
3. Asignar al usuario el rol Community Administrator
Dirigirse a Panel de Control - Menú Comunidades -> Acciones -> Asignar roles de usuario
4. Seleccionar Community Administrator.
5. Buscar entre los usuarios disponibles y seleccionar el que se desea. Luego guardar presionando el botón Actualizar asignaciones.
6. Asignar al usuario el rol Community Owner.
Dirigirse a Panel de Control - Menú Comunidades -> Acciones -> Asignar roles de usuario
7. Seleccionar Community Owner.
8. Buscar entre los usuarios disponibles y seleccionar el que se desea. Luego guardar presionando el botón Actualizar asignaciones.
Ese usuario, dentro de esa comunidad tendrá permisos para agregar o quitar páginas, agregar o quitar portlets.
HowTo Definir permisos sobre páginas en ePortal
Confirmar versión para aplicar estas instrucciones
Las indicaciones que se presentan en esta página corresponden a la versión 5.2 de O3 o posteriores.
Para versiones anteriores, se utiliza otra versión para el portal (Liferay) que requiere otros pasos para restringir el acceso a las
diferentes páginas.
Contexto
En las organizaciones es posible ofrecer distintos portales, a través del uso de comunidades. Para cada una de ellas, se definen los miembros
(usuarios del portal) que tendrán acceso.
Por otro lado, los portales se desarrollan a partir de un conjunto de páginas que se organizan de acuerdo a distintas necesidades y que ofrecen
la información relevante de la forma más adecuada.
En ocasiones los miembros de la comunidad acceden solo a un subconjunto de las páginas del portal, por lo que es necesario manejar
restricciones en las páginas. Estas restricciones se implementan con el mecanismo de Roles Normales del Enterprise Portal.
La idea entonces, es poder asignar permisos sobre las páginas en función de los roles normales definidos en ePortal.
Proceso de definición de restricciones a las páginas
Antes de iniciar el proceso de definición de permisos sobre las distintas páginas, es necesario cambiar la configuración del portal. Para ello se
deben realizar los siguientes pasos:
1. Bajar el servidor.
2. Modificar la property portal-ext.properties ubicada en <O3>/jboss/server/default/deploy/liferay.war/WEB-INF/classes, comentando la
siguiente línea: permissions.user.check.algorithm=2 utilizando el carácter #.
#permissions.user.check.algorithm=2
3. Reiniciar el servidor.
Luego del cambio, los permisos sobre los diferentes contenidos quedaran negados y se deberán ir habilitando para cada
página y portlet.
Ejemplo: Permisos para la página inicial de comunidad Guest (autenticación)
Como resultado del cambio anterior, al ingresar a la página principal de eportal se muestra la siguiente pantalla, con el mensaje de error "Usted
no tienen permiso de ver esta página". Esto ocurre debido a que el rol Guest no tiene permisos para visualizar la comunidad guest y sobre el
portlet EportalPortlet. Tanto el rol como la comunidad guest, son los valores por defecto que se utilizan al acceder al portal, antes de
autentificarse.
Luego de realizado el cambio en la configuración, se puede comenzar la definición de permisos sobre las páginas de la comunidad:
1. Ingresar al portal como usuario administrador (admin según distribución de O3).
2. Ir a la opción “Administrar páginas” desde el menú principal.
Editar página "Welcome" de la comunidad Guest
A través del botón "Permisos", se llega a una pantalla como la que sigue, donde se debe asignar la opción “ver” para el rol Guest.
Asignar permisos sobre la página "Welcome" de la comunidad Guest
Luego debemos asignar permisos sobre el portlet EportalPortlet, que es el portlets de bienvenida que se despliega en la página inicial.
Vamos a panel de control->Roles y seleccionamos Guest. Dentro del rol la pestaña Definir permisos->Añadir permisos de portlet.
Aquí se debe elegir el portlet (en este caso EportalPortlet) establecer el ámbito (alcance del permiso, a nivel de todo el portal o de una
determinada comunidad) y configuración. Luego guardamos los cambios.
Definir permisos sobre EportalPortlet
Luego de realizados los cambios, si volvemos a ingresar a la página principal se mostrará de manera correcta:
Página Inicial eportal
Una vez asignado el permiso de acceso para una página, se deberá otorgar permisos sobre cada uno de los portlet. En caso contrario se
despliega el siguiente mensaje . "Lo siento, no tiene los roles necesarios para acceder a este portlet ".
Si deseamos asignar permisos sobre los O3 Portlets, vamos a panel de control->Roles y elegimos el rol. Una vez seleccionado el rol, nos
dirigimos a la pestaña Definir permisos->Añadir permisos de portlet.
Los O3 Portlets se encuentran en la página 4/5 como muestra la imagen que sigue:
Cómo definir permisos sobre O3 Portlets
Ejemplo: Cambiar permisos a una página cualquiera de una comunidad arbitraria
Los siguientes pasos, permiten ocultar la página de nombre 'Canales' para los usuarios del rol 'User' :
1.
2.
3.
4.
5.
Ingresar al portal como usuario administrador (admin según distribución de O3).
Dirigirse a la opción “Administrar páginas” desde el menú principal.
Elegir la página que se desea ocultar del árbol de la comunidad que se visualiza a la izquierda.
Dirigirse a Permisos y de-seleccionar la opción Ver del rol al cual se desea restringir el acceso.
Enviar.
Ejemplo: Asignar permisos a determinado usuario para modificar una página
1.
2.
3.
4.
5.
6.
7.
8.
9.
Ingresar al portal como usuario administrador (admin según distribución de O3).
Dirigirse a Panel de Control->Roles.
Añadir un nuevo Rol de tipo Normal.
Seleccionar el rol creado, y dirigirse a la pestaña Asignar miembros.
Seleccionar un usuario disponible y presionar Actualizar Asignaciones.
Dirigirse a la opción “Administrar páginas” desde el menú principal.
Elegir la página que se desea del árbol de la comunidad que se visualiza a la izquierda.
Dirigirse a Permisos y marcar las opciones Actualizar y Ver para el rol definido en el punto 2.
Enviar.
HowTo donde almacena los documentos e imágenes eportal
Contexto
Las distintas comunidades suelen utilizar diferentes contenidos, por medio de portlet como ser la biblioteca de documentos o el visor de
contenidos web. La idea es conocer donde y como se almacenan estos documentos e imágenes.
Documentos
La biblioteca de documentos almacenan su contenido (por defecto) en la siguiente ubicación:
<o3-install>/jboss/server/default/data/liferay/data/document_library/
Dentro de este directorio se genera una nueva carpeta con el código de la Company que posee el documento. En este directorio se crea una
nueva carpeta con el código de la "folder" de Liferay donde está el documento. Está carpeta va a contener otro directorio con el nombre del
documento en cuestión, donde se almacena el documento.
Por ejemplo: <o3-install>/jboss/server/default/data/liferay/data/document_library/10097/12910/DLFE-1.pdf/
Los archivos se almacenan de acuerdo a cierta nomenclatura, tomando como referencia la versión del mismo, por ejemplo:
la primera vez que subes el fichero se llama 1.0
si haces algún cambio y lo subes de nuevo se crea un nuevo fichero con el nombre 1.1 y así sucesivamente.
Cada nuevo documento que se agregue, generara una nueva carpeta contenedora.
Imágenes
El visor de contenidos web utiliza una galería de imágenes, la cual almacena su contenido en base de datos (por defecto hypersonic).
HowTo drill across en eportal
Contexto
Supongamos que tenemos dos cubos, uno de los cuales contiene entre otros datos información sobre pronósticos de venta de los
departamentos de una empresa, mientras que el otro tiene información sobre ventas reales realizadas por esos mismos departamentos.
Si la empresa quiere confrontar valores reales con los pronosticados para un departamento, puede hacerlo a través de una operación que se
denomina drill across.
Lo que hace posible esta operación es la existencia de la dimensión departamento que es idéntica para ambos cubos. Por eso se dice que los
cubos tienen sus dimensiones departamento conformadas.
Si elegimos un departamento en uno de los cubos, en el otro aparecerá ese mismo departamento y se podrá confrontar fácilmente los valores
mencionados.
Cómo se implementa en O3
1. Se define una vista de cada uno de los cubos de modo que cada una de ellas contenga la dimensión departamento y la medida de
ventas respectiva (pronostico o valor real, según el caso).
2. Se incluyen ambas vistas en otros tantos O3 View Portlet de una página del ePortal.
3. Se define en esa misma página un O3 Control Portlet sincronizado con ambos cubos. En el nombre del cubo de este portlet ponemos el
nombre de uno de los dos. Este portlet debe permitir seleccionar un departamento.
Cómo se ejecuta
1. Se elige en el O3 Control Portletl un departamento.
2. En ambas vistas aparece solamente la fila que corresponde al departamento elegido junto con el valor de ventas correspondiente
(pronóstico o valor real).
3. Si es necesario se pueden incluir en las vistas otras dimensiones y/o otras medidas, pero las mencionadas son esenciales para que el
drill across funcione correctamente.
Bibliografía
Ralph Kimball – The soul of the Data Ewarehouse Part 2 Drill Across – 5 de abril de 2003 en www.intelligeententerprise.com
HowTo ePortal y localhost
Para efectuar este cambio es necesario bajar previamente el servidor.
Problema
Luego de la instalación completa de O3, el componente Enterprise Portal funciona si se abre un explorador de Internet en el propio equipo donde
se instaló pero no desde otro.
La razón es que se buscan las páginas referidas como 'localhost' como consecuencia de que al momento de la instalación no se definió
correctamente la forma de referenciar dicho componente, o bien se realizó cambio de puertos posterior a la instalación.
Solución
Para solucionar este problema se debe modificar un archivo dentro de la instalación, para sustituir el valor 'localhost:8080' por el valor correcto
(nombre o ip del servidor y puerto utilizado)
Se debe editar el archivo de nombre portal-ext.properties que se encuentra en la ubicación:
<O3DIR>\jboss\server\default\deploy\liferay.war\WEB-INF\classes
donde O3DIR refiere a la raíz de la instalación de O3
En dicho archivo, se debe sustuir el valor de la siguiente property, asginando nombre de servidor y puerto utilizados:
o3.cas.server.host=localhost:8080
HowTo exportar e importar una comunidad en eportal
Contexto
Respaldar comunidades en un medio físico utilizando la operación Exportar.
Recuperar respaldos de comunidades desde un medio físico utilizando la operación Importar.
Trabajar en diferentes ambientes (producción y desarrollo) utilizando comunidades en paralelo.
Proceso
Exportar:
1. Dirigirse a Panel de Control
2. Comunidades -> Acciones -> Administrar páginas
3. Seleccionar la pestaña Páginas públicas o privadas, en función de como esté estructurada la comunidad.
4. Seleccionar la pestaña Exportar/Importar
5. Seleccionar la pestaña Exportar (opción por defecto).
6. Seleccionar las opciones de exportación (permisos, tema, etc).
7. Presionar Exportar.
8. Guardar el archivo .lar que se genera. El archivo se almacena en el directorio por defecto establecido en la configuración del
navegador para las descargas.
Importar:
La comunidad donde se van a importar los datos, debe estar creada previamente.
1.
2.
3.
4.
5.
Dirigirse a Panel de Control
Comunidades -> Acciones -> Administrar páginas
Seleccionar la pestaña Páginas públicas o privadas, en función de como esté estructurada la comunidad.
Seleccionar la pestaña Exportar/Importar.
Seleccionar la pestaña Importar.
6. Cargar el archivo exportado .lar generado utilizando el botón Examinar.
7. Seleccionar las opciones de importación (permisos, tema, etc).
8. Presionar Importar.
HowTo importar páginas de otra comunidad
Contexto
La idea es reutilizar el formato de algunas páginas creadas en otras comunidades. Esto debería ser posible simplemente con las operaciones
exportar/importar, pero las mismas presentan algunas dificultades, por ejemplo, que se reemplacen páginas o se ubiquen en niveles incorrectos
dentro de la estructura de la comunidad.
Workaround
Primero se debe tener en cuenta la cantidad de páginas que tiene la comunidad base (para nuestro ejemplo vamos a considerar 7).
1. Generar una copia de la comunidad de la cuál se desean extraer ciertas páginas, eliminando todas aquellas páginas que no sean de
interés, y luego exportarla.
2. Descomprimir y editar el archivo .lar (cómo en nuestro ejemplo, la comunidad base tiene 7 páginas, los layout que se quieran agregar
deberán continuar la numeración, a fin de evitar "pisar" páginas).
3. Editar el archivo manifest.xml, modificando todas las apariciones de layout-id="1" por layout-id="8" y el
path="/groups/../layouts/1/layout.xml" por path="/groups/../layouts/8/layout.xml".
Archivo Original:
3.
<root>
<header build-number="5203" export-date="lun, 04 abr 2011 10:01:58 -0300" type="layout-set"
group-id="14209" private-layout="true" theme-id="o3default_WAR_eportalthemes"
color-scheme-id="01"/>
<layouts>
<layout layout-id="1" path="/groups/14209/layouts/1/layout.xml"/>
</layouts>
<roles/>
<portlets>
<portlet portlet-id="71_INSTANCE_Do4c" layout-id="1"
path="/groups/14209/portlets/71_INSTANCE_Do4c/14213/portlet.xml"/>
<portlet portlet-id="com_ideasoft_o3_portlets_O3Portlet_WAR_o3portal_INSTANCE_2sFz"
layout-id="1"
path="/groups/14209/portlets/com_ideasoft_o3_portlets_O3Portlet_WAR_o3portal_INSTANCE_2sFz/14213/portlet.xml"/>
<portlet portlet-id="15" layout-id="1" path="/groups/14209/portlets/15/14213/portlet.xml"/>
<portlet portlet-id="25" layout-id="1"
path="/groups/14209/portlets/25/14213/portlet.xml"/>
</portlets>
</root>
Archivo Modificado:
<root>
<header build-number="5203" export-date="lun, 04 abr 2011 10:01:58 -0300" type="layout-set"
group-id="14209" private-layout="true" theme-id="o3default_WAR_eportalthemes"
color-scheme-id="01"/>
<layouts>
<layout layout-id="8" path="/groups/14209/layouts/8/layout.xml"/>
</layouts>
<roles/>
<portlets>
<portlet portlet-id="71_INSTANCE_Do4c" layout-id="8"
path="/groups/14209/portlets/71_INSTANCE_Do4c/14213/portlet.xml"/>
<portlet portlet-id="com_ideasoft_o3_portlets_O3Portlet_WAR_o3portal_INSTANCE_2sFz"
layout-id="8"
path="/groups/14209/portlets/com_ideasoft_o3_portlets_O3Portlet_WAR_o3portal_INSTANCE_2sFz/14213/portlet.xml"/>
<portlet portlet-id="15" layout-id="8" path="/groups/14209/portlets/15/14213/portlet.xml"/>
<portlet portlet-id="25" layout-id="8"
path="/groups/14209/portlets/25/14213/portlet.xml"/>
</portlets>
</root>
4. Guardar.
5. Renombrar la carpeta ubicada dentro de ../groups/../layouts con el nuevo id, en este caso 8.
6. Editar el archivo layout.xml modificando todas las apariciones de layout-id="1" por layout-id="8".
Archivo Original:
<layout old-plid="14213" layout-id="1">
<parent-layout-id>0</parent-layout-id>
...
</layout>
Archivo Modificado:
<layout old-plid="14213" layout-id="8">
<parent-layout-id>0</parent-layout-id>
...
</layout>
7. Guardar.
8. Comprimir nuevamente como zip y renombrar como .lar
9.
9. Importar comunidad.
Cómo resultado de este proceso, nuestra comunidad base ahora tendrá 8 páginas.
HowTo instalar nuevo tema de apariencia
Contexto
Personalizar la apariencia de nuestro portal, para adecuarlo a nuestros gustos y necesidades.
Proceso
Este proceso debe ser efectuado por el administrador del eportal.
Los archivos deben
1.
2.
3.
4.
5.
6.
7.
Dirigirse a Panel de Control.
Instalación de Plugins (menú abajo a la izquierda).
Plugins de temas de apariencia (2da. pestaña del menú superior).
Instalar más temas.
Subir archivo (2da.pestaña del menú superior), utilizando Examinar -> buscando la ruta del archivo con extensión .war
Presionar Instalar.
Refrescar navegador.
HowTo Instalar nuevo theme Default en ePortal
Confirmar versión para aplicar estas instrucciones
Este nuevo tema se aplica en aquellas versiones anteriores a O3 5.4. A partir de está versión ya viene incluido en la
instalación.
Contexto
Se presenta un nuevo tema gráfico para nuestras páginas que modifica el que viene por defecto con la instalación.
Entre otras mejoras, facilita el acceso desde el menú superior a las páginas del segundo nivel.
Instalación
El proceso es el siguiente:
1. Bajar el servidor.
2. Renombrar el archivo <InstalaciónO3>\jboss\server\default\deploy\gserver\eportalthemes.war (ejemplo eportalthemes_old.war).
3. Copiar y descomprimir el archivo zip, de forma que quede una carpeta como se muestra en la siguiente imagen (como resultado, donde
antes teníamos un archivo .war, ahora tendremos una carpeta con el mismo nombre):
4. Reiniciar jboss, mientras tanto borrar la cache del navegador que utilice y reiniciarlo.
Para volver al viejo tema, se debe bajar el servidor, eliminan el archivo eportalthemes.war y renombrar el archivo eportalthemes_old.war como
estaba previamente.
Default - RED
Default - BLUE
Default - GREEN
Default - GREY
HowTo Instalar plantillas en el Enterprise Portal
Contexto
Hay ocasiones en las cuales el conjunto de plantillas disponibles en Enterprise Portal para confeccionar nuestras páginas no se ajusta a nuestra
necesidad. Para estos casos, existe la posibilidad de definir e instalar nuevas plantillas.
Instalación
Existen 2 formas de realizar la instalación de las nuevas plantillas:
1. Copiar los archivos con extensión war en: <install-o3>/jboss/server/default/deploy
2. Siguiendo los siguientes pasos:
a. Ir a Panel de Control.
b. Instalación de Plugins (menú abajo a la izquierda).
c. Plugins de plantilla de página (3era. pestaña del menú superior).
d. Instalar más plantillas de página.
e. Subir archivo (2da.pestaña del menú superior)..
En examinar -> buscar el archivo con extensión war de la plantilla.
f. Presionar Instalar.
g. Refrescar navegador.
Nuevas Plantillas
Diseño
Descripción
Archivo de instalación
3 columnas (30-50-20)
layout-3-Columns_30_50_20.war
2 columnas (80-20)
layout-2-columns-80-20.war
4 columnas (20-30-30-20)
layout-4.war
Superior: 2 columnas (30-70)
Inferior: 1 columna (100)
layout-2-1.war
Superior: 1 columna (100)
Medio: 2 columnas (75-25)
Inferior: 1 columna (100)
1-2-1-columns.war
Superior: 1 columna (100)
Medio: 3 columnas (40-30-40)
Inferior: 1 columna (100)
1-3-1-columns.war
Superior: 2 columnas (50-50)
Medio: 1 columna (100)
Inferior: 2 columnas (50-50)
2-1-2-columns.war
Superior: 3 columnas (40-30-40)
3-2-3-columns.war
Medio: 2 columna (40-60)
Inferior: 3 columnas (40-30-40)
HowTo Login Anónimo en ePortal
Login Anónimo en ePortal
Describe el funcionamiento del login anónimo, los pasos necesarios para configurarlo, y como generar un parche a aplicar sobre la versión
5.2.004 de O3 que incluya este feature.
Objetivo
Los objetivos del Usuario anónimo en el eportal son:
Permitir a usuarios que acceden al Enterprise Portal a trabajar en la comunidad Guest, sin necesidad de registrarse como usuarios.
Permitirles logearse si así lo desean.
Si se deslogean volver a trabajar como anónimos en la comunidad Guest.
La funcionalidad completa de login anónimo está disponible a partir de la versión 5.3.
Enfoque
Mientras el usuario está como anónimo, trabaja con un usuario famoso contra el servidor O3. El usuario típicamente es guest pero puede ser
configurado.
Funcionamiento
El login anónimo es un feature opcional en el Enterprise Portal. Por defecto se encuentra desactivado.
Los portlets de O3, para funcionar, requieren una sesión autenticada del lado del servidor. Cuando el feature está habilitado, y el usuario no está
autenticado en el Enterprise Portal, los portlets O3 hacen un login (automáticamente) con un usuario configurado para este fin (al cual
llamaremos usuario "anónimo").
Esto plantea un nuevo escenario: el portal es accedido por un usuario anónimo. Luego, este usuario anónimo se autentica en el sistema (login
tradicional). En este escenario, el sistema invalida la sesión o3 del usuario anónimo luego del login tradicional. En consecuencia, se evita que el
usuario autenticado con el login tradicional siga viendo la sesión del usuario anónimo.
Configuración
Se debe especificar el usuario y password del usuario anónimo, en el archivo de configuración GServer.properties, que se encuentra en
<O3_HOME>/jboss/server/default/ideasoft-o3/, agregando la siguiente información:
Property
Descripción
Default
o3.anonymous.user
Indica el rol habilitado.
guest
o3.anonymous.password
indica el password del rol habilitado.
guest
GServer.properties de ejemplo
o3.anonymous.user=guest
o3.anonymous.password=guest
El feature de login anónimo se activa cuando se ha especificado la propiedad o3.anonymous.user.
Una vez modificada la configuración del servidor, se deberá agregar el usuario guest en O3 ya sea a través del componente AdmServer o de
Portal y asociarlo al rol de licenciamiento, por ejemplo User.
Ver: Administrando Usuarios (Web) - Administrando Roles (Web)
HowTo ocultar el panel de control a usuarios anónimos
Contexto
Algunos portales, principalmente de organismos públicos desarrollan sus comunidades utilizando páginas públicas limitando el acceso de
administración y configuración solo a los usuarios administradores.
La idea es ocultar el menú de acceso al eportal para los usuarios "anónimos", y que solo los usuarios con rol de administrador tengan acceso al
panel de control a través de una url.
Proceso
1. Bajar jboss.
2. Editar el archivo portal_normal.vm referente a la plantilla del tema (en este caso default), ubicado en:
<o3-install>/jboss/server/default/deploy/gserver/eportalthemes.war/o3default/templates/
modificando la línea:
#parse ("$full_templates_path/dock.vm")
por lo siguiente:
#if
(($permissionChecker.isOmniadmin())||$permissionChecker.isCompanyAdmin($themeDisplay.getCompanyId()))
#parse ("$full_templates_path/dock.vm")
#end
3. Salvar los cambios
4. Reiniciar jboss.
A partir del cambio los administradores deberán acceder a través de la siguiente url:
por ejemplo: http://localhost:8080/eportal/c/portal/login (<nombre o ip del server>:<puerto>/eportal/c/portal/login)
HowTo ocultar menuItem Páginas públicas (0) en eportal
Contexto
Se aplica para aquellas comunidades diseñadas solo con páginas privadas, que no utilizan páginas públicas.
Está modificación oculta la opción del menú del usuario, solo en aquellos casos donde la cantidad de página públicas de una comunidad es cero.
Proceso
1. Dirigirse a la ubicación <03_install>/jboss/server/default/deploy/liferay.war/html/taglib/ui/my_places y editar el archivo page.jsp
agregando showPublicPlace = false
if (publicLayoutsPageCount == 0) {
if (organizationCommunity) {
...
}
showPublicPlace = false;
}
boolean showPrivatePlace = true;
if (privateLayoutsPageCount == 0) {
...
}
2. Refrescar navegador.
Resultado
Se oculta el menuItem Páginas públicas(0) para la comunidad Default:
HowTo personalizar una comunidad en eportal
Confirmar versión para aplicar estas instrucciones
Las indicaciones que se presentan en esta página corresponden a la versión 5.2 de O3 o posteriores.
Para versiones anteriores, se utiliza otra versión para el portal (Liferay) que requiere otro proceso de personalización.
Contexto
Personalizar la apariencia de las comunidades utilizando themes diseñados por la organización.
Los cambios deben ser realizados por el usuario administrador.
Instalación de nuevo tema de apariencia
Los nuevos temas de apariencia quedaran instalados bajo la ubicación <o3-install>/jboss/server/default/deploy/<nombre del tema.war>
1.
2.
3.
4.
5.
6.
7.
Dirigirse a Panel de Control.
Instalación de Plugins (menú abajo a la izquierda).
Plugins de temas de apariencia (2da. pestaña del menú superior).
Instalar más temas.
Subir archivo (2da.pestaña del menú superior), utilizando Examinar -> buscando la ruta del archivo con extensión .war
Presionar Instalar.
Refrescar navegador.
Aplicar nuevo tema en una comunidad
1.
2.
3.
4.
5.
Dirigirse a Panel de Control
Comunidades -> Acciones -> Administrar páginas
Seleccionar la pestaña Páginas públicas o privadas.
Seleccionar pestaña Apariencia.
Seleccionar un tema disponible.
Modificar nuevo tema instalado
1.
2.
3.
4.
5.
6.
Bajar el servidor.
Descomprimir el archivo war o editarlo.
Modificar css, imágenes, etc.
Comprimir como war manteniendo la estructura de directorios.
Reiniciar el servidor.
Borrar cache y/o refrescar el navegador.
Eliminar nuevo tema instalado
Una vez eliminado el tema, aquellas comunidades o páginas que lo estaban utilizando, cambiaran automáticamente al tema default.
1. Bajar el servidor.
2. Eliminar el <nombre del tema.war> ubicado en <o3-install>/jboss/server/default/deploy/
3. Reiniciar servidor.
HowTo Quitar Mi Comunidad en ePortal
Confirmar versión para aplicar estas instrucciones
Las indicaciones que se presentan en esta página corresponden a la versión 5.2 de O3 o posteriores.
Para versiones anteriores, se utiliza otra versión para el portal (Liferay) que requiere otros pasos para quitar "Mi Comunidad".
Contexto
Las comunidades son un mecanismo que permiten agrupar usuarios de acuerdo a características comunes en cuanto a la información que
manejan, los intereses que tienen o el tipo de trabajo que desempeñan.
Cada nuevo usuario que se defina, tendrá creada por defecto una comunidad denominada "Mi Comunidad", en la cual podrá definir nuevas
páginas, agregar portlet, etc.
La idea entonces, es poder quitar el acceso a la comunidad generada por defecto, y que los usuarios solo puedan tener acceso a la(s)
comunidad(es) de la cual son miembros.
Proceso para quitar "Mi Comunidad"
Es necesario cambiar la configuración del portal. Para ello se deben realizar los siguientes pasos:
1. Modificar la property portal-ext.properties ubicada en <O3>/jboss/server/default/deploy/liferay.war/WEB-INF/classes, cambiando el
valor true de las propiedades:
layout.user.public.layouts.enabled=true
layout.user.private.layouts.enabled=true
por false, quedando definidas de la siguiente manera:
layout.user.public.layouts.enabled=false
layout.user.private.layouts.enabled=false
2. Reiniciar el servidor.
Organizaciones vs. Comunidades
Contexto
Ambas soluciones son buenas para muchas situaciones y muchas veces hay pequeñas diferencias. Éstos son algunos de los beneficios para
cada uno de los enfoques.
Beneficios del uso de las Organizaciones
Las organizaciones pueden ser estructuradas de manera jerárquica.
Las organizaciones son administradas por el administrador del portal.
Se adecuan mejor en estructuras externas que cambian con menos frecuencia.
Beneficios del uso de las Comunidades
Es posible delegar el permiso de crear nuevas comunidades, por lo que se adaptan de manera ágil con estructuras dinámicas y grupos
que cambian con mucha frecuencia.
Permiten facilitar la delegación de tareas dentro de una comunidad.
Los usuarios pueden pertenecer a muchas comunidades.
How To O3 AdmServer
Ayudas y explicaciones de cómo realizar operaciones con el componente O3AdmServer.
Cómo usar una nueva Base de Datos para RBAC
Definición y Permisos de Usuarios
HowTo Acceso y Configuración Página de Ayuda de un Cubo
HowTo cambiar password al usuario system
Migración O3Server.cfg a Base de Datos
Cómo usar una nueva Base de Datos para RBAC
A continuación se detallan los pasos para usar RBAC sobre un motor de base de datos diferente a Hypersonic.
Los pasos indicados con el símbolo
deben ejecutarse cada vez que se actualiza la versión del servidor ya que la actualización retorna las
configuraciones descriptas en estos puntos a su estado por defecto
Creación de la Base de Datos para RBAC (Ejemplo con Oracle)
1. Copiar el driver JDBC que se desea utilizar en las siguientes carpetas
<O3>/classes/jdbc
<O3>/jboss/server/default/lib
2. Iniciar el JBoss
3. Iniciar el AdmServer
4. En el editor de configuración del Servidor, indicar los datos correspondientes para la base de datos que se desea utilizar. Por ejemplo:
Motor
Oracle
Driver
oracle.jdbc.driver.OracleDriver
URL
jdbc:oracle:thin:@orion.ideasoft:1521:ORION
Usuario y password
Una cuenta válida
Si desea configurar una base diferente, consulte: Configuración de drivers jdbc
5. Presionar el botón de creación de la base de datos (Generar Tablas)
6. Cerrar el AdmServer
Actualizar el Data Source de JBoss para tomar el nuevo repositorio de usuarios
1.
2.
3.
4.
5.
Bajar el JBoss
Renombrar el archivo <O3>jboss\server\default\deploy\gserver\gserver-hsql-ds.xml de modo que se llame #gserver-hsql-ds.xml
Copiar el archivo <O3>jboss\server\default\deploy\gserver#gserver-oracle-ds.xml de modo que se llame gserver-oracle-rbac-ds.xml
Editar este último archivo renombrado (gserver-oracle-ancel-ds.xml)
Modificar el contenido del tag <connection-url> con el siguiente contenido:
<connection-url>jdbc:oracle:thin:@orion.ideasoft:1521:ORION</connection-url>
6. Modificar el contenido de los tags <user-name> y <password> con una cuenta válida
Ingreso de los usuarios mínimos para el funcionamiento
1.
2.
3.
4.
5.
Iniciar el JBoss
Iniciar el AdmServer
Ingresar con el usuario system de password system
Dar de alta los siguientes usuarios
user, con password user
admin, con password admin
5. Al usuario admin agregarle los siguientes atributos
isAdmin con valor booleano en TRUE
runAsEnabled con valor booleano en TRUE
6. Dar de alta los siguientes roles
User al que debe pertenecer el usuario user
Manager al que debe pertenecer el usuario admin
7. Cerrar el AdmServer
Definición y Permisos de Usuarios
Atributos que determinan el comportamiento de los usuarios
La definición de usuarios se realiza desde el componente O3Server Administrator, en el nodo Seguridad
Para cada usuario pueden definirse distintos atributos que determinan el comportamiento del usuario. Existe un conjunto de atributos
predefinidos, los cuales deben definirse teniendo en cuenta uso de mayúsculas y minúsculas.
A continuación se enumeran los atributos más utilizados:
Atributo
Significado
Valores
posibles
Rol o
Usuario
Comportamiento
por Defecto
canAddViews
Si puede grabar vistas en el servidor
booleano
usuario
Si el attr. no
existe, el usuario
puede grabar
vistas
isAdmin
Indica que el usuario es administrador de O3
booleano
usuario
Si el attr. no
existe, el usuario
no es
administrador
runAsEnabled
Responde a requerimientos de configuración cuando el servidor envía
notificaciones a los usuarios, por ejemplo a través del servicio de envío de reglas.
Permite que el usuario tome momentáneamente los permisos requeridos por el
servicio en cuestión. No tiene ningún efecto sobre los permisos que el usuario
utiliza al loguearse explícitamente al servidor
booleano
usuario
falso
Atributos que determinan el comportamiento de grupos de usuarios
El atributo CanAddViews indica si se permite o se niega la posibilidad de salvar vistas en el servidor. En ocasiones, es necesario definir el
comportamiento para un grupo de usuarios más que para cada usuario en particular. En este caso es ventajoso poder definir el comportamiento
para los distintos roles del sistema y no solo para cada usuario.
A partir de la versión 5 es posible definir este comportamiento por rol desde el menú de Administración de la interfaz web.
Una vez seleccionado el modo Administración, se debe seleccionar la solapa "PERMISOS O3". Allí se verá la lista de roles definidos. Para cada
rol se debe indicar 3 tipos de permisos para las vistas:
Tipo de
vistas
Significado
Valores
Posibles
Rol o
Usuario
Comportamiento por Defecto
Pública
Si puede grabar
vistas públicas en el
servidor
Permitir
Denegar
No
Especificado
rol
El valor No Especificado tendrá el comportamiento que indique el valor por defecto.
El valor por defecto está visible al momento de definir estos permisos, y en general
este valor es Permitir, pero puede ser modificado
de Rol
Si puede grabar
vistas del mismo Rol
en el servidor
Permitir
Denegar
No
Especificado
rol
El valor No Especificado tendrá el comportamiento que indique el valor por defecto.
El valor por defecto está visible al momento de definir estos permisos, y en general
este valor es Permitir, pero puede ser modificado
Privada
Si puede grabar
vistas privadas en el
servidor
Permitir
Denegar
No
Especificado
rol
El valor No Especificado tendrá el comportamiento que indique el valor por defecto.
El valor por defecto está visible al momento de definir estos permisos, y en general
este valor es Permitir, pero puede ser modificado
Controles más específicos
Si bien los atributos presentados anteriormente definen algunas carácterísticas generales del comportamiento de los usuarios, puede ser
insuficiente para modelar ciertos comportamientos que se requieren con frecuencia.
Algunos ejemplos de los comporntamientos se detallan a continuación.
Cada usuario mantiene control de eliminación sobre las vistas creadas por él mismo.
La situación se presenta cuando debemos decidir si permitimos a los usuarios almacenar sus propias vistas en el servidor. Si el acceso a la
información es a través del cliente Web, será necesario habilitar el MODO EDICIÓN para que el usuario pueda modificar las vistas luego de
creadas.
En un esquema seguro de trabajo, es recomendable que en este escenario se agregue la restricción de que cada vista solo puede ser eliminada
por el usuario que la creó. Para ello se debe agregar la siguiente cláusula en el archivo gserver_custom.properties
o3.views.defaultRestriction=owner
El archivo gserver_custom.properties se debe ubicar en el siguiente directorio:
<O3_DIR>\jboss\server\default\ideasoft-o3
Tener en cuenta que dicho archivo no es creado por la instalación del producto, por lo que debe ser creado por el administrador de la instalación
HowTo Acceso y Configuración Página de Ayuda de un Cubo
INTRODUCCION
A un cubo publicado mediante el O3 Server, es posible asignarle una Pagina de Ayuda del cubo, donde explicar los objetivos del mismo, su uso,
alcance de algunas medidas, dimensiones, etc.
Para ello debemos crear la misma en codigo de hypertexto (html, por ejemplo).
PROCEDIMIENTO
Luego de creada la pagina, por ejemplo Ventas.html, tenemos que asociar una URL al cubo desde al O3 AdmServer.
En la pestaña General del Cubo, hay un campo Pagina de ayuda y en esa ventana asociar la URL, por ejemplo
http://www.compania.com.uy/O3Help/Ventas.html.
En el caso de no contar con un servidor web, se puede utilizar el mismo JBoss de la instalacion del O3 Performance Suite.
1. crear una carpeta O3Help (por ejemplo), en <O3>/jboss/server/default/deploy/gserver/0o3.ear/o3portal.war/
2. Considerando que la pagina se llama Ventas.html, el servidor es el 192.168.10.10, en la ventana del O3 AdmServer ingresar la siguiente
URL http://192.168.10.10:8080/o3portal/O3Help/Ventas.html
FORMAS DE USO DEL LADO DEL CLIENTE
O3 BROWSER
Acceder a la pagina de ayuda del cubo desde el menu Ayuda, Ayuda de Cubo. Se abrira el su Navegador Web con la pagina Ventas.html
O3 PORTAL
En el Barra de Herramientas del O3 Portal, hay un icono en forma de signo de interrogacion a la derecha, que al "cliquearlo" se abrira en otro
Navegador la pagina Ventas.html
CONSIDERACIONES
1. En el momento de migrar de version, tener en cuenta de respaldar y copiar esta carpeta.
2. Para que funcione correctamente en Unix, GNU/Linux; hay que prender una property indicando el path de acceso al Navegador Web
que tenga instalado. Esto se hace agregando una linea al archivo <O3>/O3Browser.properties, por ejemplo:
ideasoft.browser.navigator=/usr/bin/firefox {0}
HowTo cambiar password al usuario system
Contexto
La instalación de O3, establece por defecto la definición de un usuario especial denominado 'system' para acceder al O3 Server Admninistrador.
Este usuario se utiliza en aquellos casos en los cuales, por algún motivo no sé cuenta con los datos del usuario administrador. La idea de este
howto es explicar el proceso para modificar su password.
Proceso
1. Ingresar a O3 Server Admninistrador como administrador o en su defecto como usuario: system, password: system.
2. Posicionarse el cursor en el árbol. Está acción permite habilitar la opción que vamos a seleccionar en el paso siguiente.
3. Dirigirse al menú Archivo, opción Cambiar Contraseña de Usuario 'system'. Se despliega el siguiente dialogo:
Contraseña Actual (por defecto) : system
4. Ingresar y confirmar la nueva contraseña.
5. Presionar aceptar para guardar la modificación. Se confirma el resultado de la operación:
Migración O3Server.cfg a Base de Datos
La finalidad de la migración del O3Server.cfg a base de datos es pasar toda la información que contiene (cubos publicados, vistas, etc.) a base
de datos, y seguir trabajando desde allí.
Los pasos para la migración son:
1. Creación o actualización de la base de datos.
2. Migración de los datos.
3. Configuración del O3Server para iniciarse con base de datos.
1- Actualización o creación de la Base de Datos.
No es necesario que el Servidor O3 esté levantado a no ser que se quiera usar la base Hypersonic que viene en el jboss, conectandose por
host:puerto.
Iniciar el AdmServer y en la toolBar seleccionar "Herramientas -->Generador Esquemas Base de Datos". Esto muestra la siguiente ventana:
Se configura la conexión a la base de datos:
1. Motor, las opciones posibles son SQL Server Microsoft, SQL Server Opta, Oracle, MySQL, PostgreSQL, HsqlDb, Derby, other.
2. Manejador (driver) a utilizar (debe tenerse el driver correspondiente en el servidor <InstalaciónO3>\jboss\server\default\lib)
3. Url completa a la base de datos (servidor, puerto de la base de datos, nombre de la misma, etc.). En caso de realizar la migración a una
nueva base de datos, la misma debe estar creada de antemano.
4. Usuario y contraseña (que se guardará encriptada) para la base de datos.
Además:
Config datasource
Se debe configurar <InstalaciónO3>\jboss\server\default\deploy\gserver\gserver-hsql-ds.xml, según la base de datos a la que
se quiera exportar (salvo que se vaya a utilizar Hypersonic), se debe cambiar el contenido de los siguientes tags:
<connection-url>, <driver-class>, <user-name> y <password>, y comentar <metadata>.
Configuración inicial (original):
Ejemplo para conexión a SQL Server:
En este caso la configuración del archivo corresponde a indicar la URL, el driver, usuario, contraseña y comentar el tag indicado.
Se deberá comentar la property hibernate.dialect = org.hibernate.dialect.HSQLDialect de
<InstalaciónO3>\jboss\server\default\ideasoft-o3\GServer.properties si no se va a trabajar con Hypersonic, dejando
hibernate.dialect = org.hibernate.dialect.SQLServerDialect si se va a utilizar SQL Server, por ejemplo.
Luego se tiene 3 opciones:
1- Verificar la conexión a la base con el botón "Verificar Conexion". Si la conexión es satisfactoria se mostrará un mensaje como el siguiente:
2- En caso de que se quiera crear las tablas, se debe de presionar el botón con la etiqueta "Generar Tablas". Se mostrará el siguiente mensaje:
3- Si las tablas ya existen y lo que se quiere es actualizar la estructura de las mismas, se debe de presionar el botón con la etiqueta "Actualizar
Tablas".
Se crearán/actualizarán las tablas de RBAC, E2, jwf, y las necesarias para cubos, vistas, cubos-roles, cubos-perfiles, modelos, etc.
2- Migración de los datos.
Luego de una actualización exitosa de la base de datos, se debe de proceder a migrar los datos del O3Server.cfg (cubos, vistas, etc.) a la base
de datos.
Para migrar los datos se debe:
1. Iniciar el O3 server y conectarse usando el AdmServer
2. Luego desde el AdmServer, seleccionar en la toolBar la opción "Herramientas --> Migrador de configuración del Servidor". Para realizar
la migración se debe presionar el botón con la etiqueta "Migrar" y a continuación se mostrará en el área de "Mensajes de la migración" la
información de qué se migró:
3. La última linea del mensaje está avisando que ya están disponibles los cubos como para comenzar a trabajar desde base de datos.
3- Configuración del O3 Server para levantar con Base de Datos.
Luego de haber seguido los pasos anteriores se debe de bajar el servidor y editar el archivo GServer.properties para modificar la property
o3.config.dataBase de <InstalaciónO3>\jboss\server\default\ideasoft-o3\GServer.properties, con el valor "true".
Al levantar el servidor nuevamente este tomará la información que se guardó en la base de datos y toda nueva información sera guardada en
este lugar.
Como los usuarios admin y user están en RBAC, se deben crear manualmente en el AdmServer una vez que se migró a base
de datos.
Volver a trabajar con O3Server.cfg
Como ya se mencionó a partir de O3 5.0 se almancena la configuración del servidor en base de datos, a diferencia de versiones anteriores
donde la configuración era almacenada en el archivo O3Server.cfg
Para facilitar la migración desde versiones anteriores se ofrece este mecanismo que tiene por resultado eliminar el uso del O3Server.cfg y pasar
a adminsitrar en base de datos la información de cubos publicados y perfiles de acceso.
De todas formas se aclara que si se necesita volver a la situación inicial, trabajando con O3Server.cfg, el procedimiento sería:
1. Apagar la property (o3.config.dataBase = false) que se define en el archivo Gserver.properties ubicado en
<O3_DIR>\jboss\server\default\ideasoft-o3
2. Reiniciar el O3Server (Jboss).
Los cambios hechos desde la migración (publicación de nuevos cubos, creación de nuevas vistas, etc.), no se verán reflejados en el
O3Server.cfg.
How To JBoss
Ayudas y explicaciones de cómo realizar operaciones con el componente JBoss.
Cambiar o deshabilitar la password de la jmx-console
HowTo Aumentando el nivel de log del O3 Server
HowTo Cambiar el puerto 8080 en JBoss
HowTo cambiar el timeout de la sesión de O3
HowTo - Cambio de puertos del Servidor de O3
HowTo configurar el Servicio de Mail de JBoss
HowTo encriptar las passwords de las fuentes de datos (en gral, bases de datos)
HowTo Monitorear uso de memoria del JBoss
HowTo ocultar o modificar la pagina de inicio de JBoss
HowTo patch para problemas de consumo de memoria
HowTo Workaround problema nombre del server
O3 Consideraciones de Seguridad
Cambiar o deshabilitar la password de la jmx-console
Contexto
La jmx-console es una herramienta que nos permite controlar el funcionamiento del JBoss. Por medio de esta podemos saber propiedades,
cambiar valores, y hasta bajar el JBoss.
Por esto es importante decidir si el acceso a la misma será restringido o no.
Si se requiere, la jmx-console puede ser deshabilitada moviendo jmx-console.war desde
<InstalaciónO3>/jboss/server/default/deploy hacia otro directorio. Es importante reservar ese war de forma de volver a habilitar
en un futuro la jmx-console, colocandolo nuevamente en el mencionado directorio.
Activar/desactivar el acceso a la jmx-console
Para activar o desactivar el acceso debemos editar los siguientes archivos.
1 - <o3>/jboss/server/default/deploy/jmx-console.war/WEB-INF/jboss-web.xml
<jboss-web>
<!-- Uncomment the security-domain to enable security. You will
need to edit the htmladaptor login configuration to setup the
login modules used to authentication users.
<security-domain>java:/jaas/jmx-console</security-domain>
-->
</jboss-web>
y descomentar para activar el control de acceso
<jboss-web>
<!-- Uncomment the security-domain to enable security. You will
need to edit the htmladaptor login configuration to setup the
login modules used to authentication users.
-->
<security-domain>java:/jaas/jmx-console</security-domain>
</jboss-web>
2 - <o3>/jboss/server/default/deploy/jmx-console.war/WEB-INF/web.xml
buscar la siguiente parte:
<!-- A security constraint that restricts access to the HTML JMX console
to users with the role JBossAdmin. Edit the roles to what you want and
uncomment the WEB-INF/jboss-web.xml/security-domain element to enable
secured access to the HTML JMX console.
<security-constraint>
<web-resource-collection>
<web-resource-name>HtmlAdaptor</web-resource-name>
<description>An example security config that only allows users with the
role JBossAdmin to access the HTML JMX console web application
</description>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>JBossAdmin</role-name>
</auth-constraint>
</security-constraint>
-->
y descomentar para activar el control de acceso
<!-- A security constraint that restricts access to the HTML JMX console
to users with the role JBossAdmin. Edit the roles to what you want and
uncomment the WEB-INF/jboss-web.xml/security-domain element to enable
secured access to the HTML JMX console.
-->
<security-constraint>
<web-resource-collection>
<web-resource-name>HtmlAdaptor</web-resource-name>
<description>An example security config that only allows users with the
role JBossAdmin to access the HTML JMX console web application
</description>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>JBossAdmin</role-name>
</auth-constraint>
</security-constraint>
3 - por último cambiar el password del usuario admin
editar el archivo <o3>/jboss/server/default/conf/props/jmx-console-users.properties
admin=admin
y cambiar a
admin=mi_nueva_clave
Sobre estos cambios al Servidor
La aplicación de los ajustes recomendados en está página al Servidor de O3 no afectan los Servicios de Asistencia y Respaldo
que una instalación concreta pudiera contar (según corresponda al modo de licenciamiento, plazo, servicios de asistencia,
etc.), ya que se consideran cambios de configuración soportados.
Hacemos esta aclaración en respuesta a consultas de nuestros clientes.
HowTo Aumentando el nivel de log del O3 Server
Cómo aumentar el nivel de log del servidor jboss
Contexto
El aumento del nivel de log ayuda a analizar situaciones, si bien genera gran cantidad de información y que su generación está optimizada y
ocurre en forma asincrónica, puede afectar la operación en algunos entornos (consumo de espacio en disco, consumo de tiempo para generar el
log).
En consecuencia, se recomienda operar con un nivel de log reducido, y en caso de ser necesario activar la generación de log
detallado.
Por defecto, desde O3 5.0.050 en adelante, el log queda configurado para trabajar en forma reducida. Este how-to explica como activar una
configuración alternativa de log de modo de producir un mayor nivel de detalle para analizar situaciones o problemas que se presenten.
Procedimiento
Sobreescribir el archivo <o3>/jboss/server/default/conf/jboss-log4j.xml con el archivo de configuración que se puede acceder mediante este link o
renombrando el archivo jboss-log4j.xml a jboss-log4j-sin_debug.xml y el jboss.-log4j-debug.xml a jboss-log4j.xml
Luego del cambio, es necesario que la hora de modificación del archivo se actualice. En Linux basta con usar el comando touch.
touch jboss-log4j.xml
En Windows, para actualizar la hora de modificación del archivo basta con editarlo y grabarlo.
Una vez modificada la hora del archivo de configuración, en pocos minutos el Servidor tomará el cambio.
Si estamos en consola veremos pasar el siguiente mensaje
13:28:08,537 INFO
[Log4jService$URLWatchTimerTask] Configuring from URL: resource:jboss-log4j.xml
Si revisamos el log (<o3>/jboss/server/default/log/server.log)
veremos el siguiente mensaje
2008-09-10 13:28:08,537 INFO [Log4jService$URLWatchTimerTask] Configuring from URL:
resource:jboss-log4j.xml [org.jboss.logging.Log4jService$URLWatchTimerTask] TR[Timer-0]
En cualquier caso, una alternativa válida para asegurarse que el servidor tomó la nueva configuración es bajar y levantar el Servidor
nuevamente.
HowTo Cambiar el puerto 8080 en JBoss
La configuración de puertos de JBoss puede especificarse en un archivo xml, lo que facilita su administración.
Ejemplo: Cómo cambiar puerto 8080
La forma más fácil de cambiar el 8080 por otro puerto es modificar en el archivo:
<jboss>/server/default/deploy/jbossweb-tomcat55.sar/server.xml
en la siguiente línea y reiniciar el servidor:
<Connector port="8080" address="${jboss.bind.address}"
HowTo cambiar el timeout de la sesión de O3
Objetivo
Hay instalaciones que por la cantidad de usuario que se conectan y luego no cierran su sesión terminan haciendo que el jboss de un out of
memory. esto se debe a que el servidor no cierra hasta luego de una hora la sesión si esta no tiene más actividad.
Para bajar este tiempo de espera seguir estos pasos:
La configuracion del tiempo de expiracion de las sesiones web se hace en archivos web.xml de las aplicaciones dentro del servidor.
o3portal
jboss/server/default/deploy/gserver/0o3.ear/o3portal.war/WEB-INF/web.xml
eportal
jboss/server/default/deploy/gserver/liferay.war/WEB-INF/web.xml
En esos archivos hay que buscar algo de la forma:
<session-config>
<session-timeout>numero</session-timeout>
</session-config>
donde el numero es el tiempo en minutos de no operacion sobre una sesion para ser cerrada por el servidor.
En o3portal sale configurado en 60 minutos y en eportal en 30 minutos.
Modificando esos parametros podes bajar esos tiempos.
HowTo - Cambio de puertos del Servidor de O3
Configuración de puertos del Servidor de O3
Contexto
El O3 Server expone sus servicios mediante un conjunto de puertos de red (TCP network ports). Es necesario que estos puertos se encuentren
disponibles en el equipo donde se instala el servidor de O3.
Cuando dichos puertos no están disponibles (pe. están en uso por otra aplicación), es necesario realizar un cambio de configuración para
indicarle a O3 un conjunto de puertos libres que puedan ser utilizados.
Alcance del Documento
Este documento describe los pasos necesarios para configurar los puertos utilizados por el O3 Server. Este documento se aplica a versiones 4.x
o posteriores.
Descripción
El cambio de configuración de puertos debe realizarse coordinando varios elementos:
Definición de nuevos puertos: Los nuevos puertos a utilizar se configuran a nivel del contenedor JEE de O3 que es JBoss AS. JBoss
utiliza un conjunto de puertos para distintos servicios, entre ellos los que son relevantes para el funcionamiento de O3. Para facilitar su
modificación, se dispone de conjuntos de puertos predefinidos, cada uno con un nombre asociado. Para modificar los puertos la forma
recomendada es cambiar un conjunto de puertos por otro, indicando simplemente un nuevo nombre de conjunto de puertos.
Ajustar puerto HSQL: Según el conjunto de puertos elegido para JBoss AS, se debe indicar a O3 el puerto bajo el que quedó disponible
la BD HSQL. Esto no es necesario si se configuró una base de datos distinta a HSQL.
Ajustar puerto HTTP (solo para Enterprise Portal): A partir de la versión 5, algunas ediciones incluyen un nuevo componente: O3
Enterprise Portal. El cambio de puerto debe ser reflejado también en la configuración de este componente. Según el conjunto de puertos
elegido para JBoss AS, se debe indicar cual es el puerto HTTP que fue seleccionado y que debe ser utilizado también por el Enterprise
Portal de O3.
Los distintos conjuntos de puertos de JBoss AS se definen en un archivo llamado port-bindings.xml, que debe estar disponible en determinado
directorio. En general no es necesaria su edición, ya que simplemente se elige un conjunto de puertos u otro según el nombre. El archivo
port-bindings.xml puede ser consultadoaquí.
El archivo port-bindings.xml define 5 grupos: *ports-default, ports-01, ports-02, ports-03, ports-04 y ports-05*. Es posible definir grupos
adicionales con nuevos valores para los puertos, o modificar estos grupos.
Servicio
ports-default
ports-01
ports-02
HTTP
8080
8180
8280
Naming
1099
1199
1299
HSQL
1701
1801
1901
Otros puertos utilizados
1098, 4444, 4445, 8083
1198, 8183, 4544,4545, 8183
1298, 4644, 4645, 8283
Procedimiento
1. Instalar el archivo de configuración de puertos
Este archivo se llama port-binding.xml, una copia del mismo puede obtenerse
aquí.
El archivo debe guardarse en el siguiente directorio: <O3>/jboss/server/default/ .
2. Configuración de conjunto de puertos activo
Mediante este paso se indica cual es el conjunto de puertos que JBoss utilizará, entre todos los definidos en el archivo port-binding.xml .
Editar el archivo jboss-service.xml que se ubica en <O3>/jboss/server/default/conf/ y buscar la declaración del MBean:
"jboss.system:service=ServiceBindingManager". La Figura muestra la sección del archivo que corresponde con la declaración de este MBean.
<!-|
|
|
|
|
|
|
|
|
|
|
|
|
Binding service manager for port/host mapping. This is a sample
config that demonstrates a JBoss instances with a server name 'ports-01'
loading its bindings from an XML file using the ServicesStoreFactory
implementation returned by the XMLServicesStoreFactory.
ServerName: The unique name assigned to a JBoss server instance for
lookup purposes. This allows a single ServicesStore to handle mulitiple
JBoss servers.
StoreURL: The URL string passed to org.jboss.services.binding.ServicesStore
during initialization that specifies how to connect to the bindings store.
StoreFactory: The org.jboss.services.binding.ServicesStoreFactory interface
implementation to create to obtain the ServicesStore instance.
-->
<mbean code="org.jboss.services.binding.ServiceBindingManager"
name="jboss.system:service=ServiceBindingManager">
<attribute name="ServerName">ports-01</attribute>
<attribute name="StoreURL">${jboss.server.home.url}/port-bindings.xml</attribute>
<attribute name="StoreFactoryClassName">
org.jboss.services.binding.XMLServicesStoreFactory
</attribute>
</mbean>
Si estuviera comentado el MBean, descomentarlo como se ve en la parte superior.
Editar el archivo para asignar al atributo ServerName el nombre del conjunto de puertos a utilizar. En el ejemplo se activa el conjunto llamado
ports-01.
2. Identificación del Puerto HSQL
Si O3 Server es utilizado con la configuración almacenada sobre la base de datos HSQL embebida en JBoss, la siguiente configuración es
necesaria.
Modificar el archivo gserver-hsql-ds.xml que se encuentra en <O3>jboss/server/default/deploy/gserver
<connection-url>jdbc:hsqldb:hsql://localhost:1701</connection-url>
cambiar por
<connection-url>jdbc:hsqldb:hsql://localhost:1801</connection-url>
este valor 1801 es en caso que se haya elegido el set de puertos ports-01, si no el valor que corresponda.
3. Identificación del puerto HTTP
Si se está utilizando O3 Enterprise Portal, es necesario indicar el nuevo puerto HTTP que se utilzará. Para ello se debe editar el archivo
<O3>/jboss/server/default/deploy/liferay.war/WEB-INF/classes/portal-ext.properties
donde figura
o3.cas.server.host=
se debe ingresar la ip/dns:port, donde el puerto (port) debe corresponderse con el puerto elegido previamente (configuración de puertos de
JBoss).
Por ejemplo, si se configuraron los puertos definidos mediante el archivo ports-01, se debe configurar este archivo de la siguiente forma:
o3.cas.server.host=ip/dns:8180
Acceder al Servidor O3 desde O3 Desktop Client
Luego del cambio de puertos, al acceder al servidor O3 desde el O3 Desktop es necesario indicar el puerto donde se encuentran los servicios de
O3. El puerto a indicar es el Naming, que por defecto es 1099. Si el servidor es accedía en localhost, luego de activar ports-01 será accedido en
localhost:1199.
Atención
si se está en un server sin posibilidad de acceder a una consola gráfica, buscar un directorio oculto .o3, y en el un archivo de
nombre o3connect.properties
cambiar la propertie gclient.server.port=1099 al valor que corresponda según el port definido
HowTo configurar el Servicio de Mail de JBoss
El servicio de mailer provisto por JBoss se configura a través del archivo
<O3>/jboss/server/default/deploy/mail-service.xml
A continuación se incluye un ejemplo de dicho archivo
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE server>
<!-- $Id: mail-service.xml 31716 2005-06-01 06:20:43Z starksm $ -->
<server>
<!-- ==================================================================== -->
<!-- Mail Connection Factory
-->
<!-- ==================================================================== -->
<mbean code="org.jboss.mail.MailService" name="jboss:service=Mail">
<attribute name="JNDIName">java:/Mail</attribute>
<attribute name="User">nobody</attribute>
<attribute name="Password">password</attribute>
<attribute name="Configuration">
<!-- Test -->
<configuration>
<!-- Change to your mail server prototocol -->
<property name="mail.store.protocol" value="pop3"/>
<property name="mail.transport.protocol" value="smtp"/>
<!-- Change to the user who will receive mail
<property name="mail.user" value="nobody"/>
-->
<!-- Change to the mail server -->
<property name="mail.pop3.host" value="pop3.nosuchhost.nosuchdomain.com"/>
<!-- Change to the SMTP gateway server -->
<property name="mail.smtp.host" value="smtp.nosuchhost.nosuchdomain.com"/>
<!-- Change to the address mail will be from -->
<property name="mail.from" value="[email protected]"/>
<!-- Enable debugging output from the javamail classes -->
<property name="mail.debug" value="false"/>
</configuration>
<depends>jboss:service=Naming</depends>
</attribute>
</mbean>
</server>
En este archivo típicamente es necesario configurar varios parámetros como son:
Usuario y Password
Nombre o dirección IP del servidor SMTP (servidor de correo)
Cuenta de correo que se utilizará como remitente de los correos enviados por O3
Usuario y Password
El nombre de usuario y password para acceder al servidor de mail se configura en la siguiente sección
<attribute name="User">nobody</attribute>
<attribute name="Password">password</attribute>
En estos atributos es necesario indicar como User el nombre de usuario del correo.
Por ejemplo, si la casilla desde la cual se mandarán correos es o3server@mi_dominio.com, el User será o3server
De forma similar, como Password debe indicarse la clave de acceso al SMTP/POP3 en caso de ser necesaria
De esta forma el XML quedaría similar a esto:
<attribute name="User">o3server</attribute>
<attribute name="Password">mi_password</attribute>
Nombre o IP del servidor de correo
El nombre o IP del servidor de correo se indica en la sección siguiente:
<!-- Change to the SMTP gateway server -->
<property name="mail.smtp.host" value="smtp.nosuchhost.nosuchdomain.com"/>
Advertencia
Es necesario que la máquina donde está instaldo el O3 server pueda tener acceso al servidor SMTP
Recomendación
Hacer un telnet al puerto 25 de la IP/DNS del servidor de correos de modo de estar seguros que se encuentra accesible
Cuenta remitente
Finalmente resta indicar una cuenta de correo válida en el servidor de correos que se utilizará como remitente para los mails enviados.
Esta cuenta se indica en la sigiuente sección:
<!-- Change to the address mail will be from -->
<property name="mail.from" value="[email protected]"/>
En el ejemplo esta sección quedaría de la siguiente forma:
<!-- Change to the address mail will be from -->
<property name="mail.from" value="o3server@mi_dominio.com"/>
Reinicio del server
No es necesario reiniciar el jboss para que estos cambios tengan efecto
Configuración con autentificación de usuario
En el caso de necesitar autentificación de usuario, especialmente si necesitamos enviar a direcciones de correo electrónicas que no son del
mismo dominio que el servidor de correos, se deberán agregar dos líneas antes de </configuration>
<property name="mail.smtp.starttls.enable" value="true" />
<property name="mail.smtp.auth" value="true"/>
Configuración para enviar vía SMTP Seguro
Cuando debamos utilizar un servidor de correos via SMTP Seguro con autentificación deberemos realizar algunos cambios en el archivo
mail-service.xml (se utiliza un ejemplo utilizando el servidor SMTP Seguro de gmail.com).
<?xml version="1.0" encoding="UTF-8"?>
<!-- $Id: mail-service.xml 62349 2007-04-15 16:48:15Z [email protected] $ -->
<server>
<!-- ==================================================================== -->
<!-- Mail Connection Factory
-->
<!-- ==================================================================== -->
<mbean code="org.jboss.mail.MailService"
name="jboss:service=Mail">
<attribute name="JNDIName">java:/Mail</attribute>
<attribute name="User">USUARIO</attribute>
<attribute name="Password">PASSWORD</attribute>
<attribute name="Configuration">
<!-- A test configuration -->
<configuration>
<!-- Change to your mail server prototocol -->
<property name="mail.store.protocol" value="pop3"/>
<property name="mail.transport.protocol" value="smtp"/>
<!-- Change to the user who will receive mail -->
<property name="mail.user" value="[email protected]"/>
<!-- Change to the mail server -->
<property name="mail.pop3.host" value="pop.gmail.com"/>
<!-- Change to the SMTP gateway server -->
<property name="mail.smtp.host" value="smtp.gmail.com"/>
<property name="mail.smtp.starttls.enable" value="true" />
<property name="mail.smtp.socketFactory.class" value="javax.net.ssl.SSLSocketFactory" />
<!-- The mail server port -->
<property name="mail.smtp.port" value="465"/>
<property name="mail.smtp.socketFactory.port" value="465" />
<!-- Change to the address mail will be from
<property
<property
<property
<property
-->
name="mail.from" value="[email protected]"/>
name="mail.smtp.user" value="[email protected]"/>
name="mail.smtp.password" value="PASSWORD"/>
name="mail.smtp.auth" value="true"/>
<!-- Enable debugging output from the javamail classes -->
<property name="mail.debug" value="false"/>
</configuration>
</attribute>
<depends>jboss:service=Naming</depends>
</mbean>
</server>
HowTo encriptar las passwords de las fuentes de datos (en gral, bases de
datos)
Consultar: http://community.jboss.org/wiki/EncryptingDataSourcePasswords
HowTo Monitorear uso de memoria del JBoss
IMPORTANTE:
Tener el Jboss corriendo
MONITOREO DE LA MEMORIA USADA POR Jboss
En un navegador de páginas web debemos de colocar la dirección direccion_del_server:8080 lo cual nos abrirá la página por defecto que nos
permite administrar parte del Jboss
1. vamos al link JMX Console,una vez dentro de la página Ctrl F (buscar) jboss.system,
ahí hacemos click type=ServerInfo
2. de nuevo Ctrl F (buscar) java.lang.String listMemoryPools()
apretamos el botón Invoke
3. en esa página buscamos Pool: Tenured Gen (Heap memory)
explicación de lo que vemos ahí:
Peak Usage : init:119341056, used:80167064, committed:133550080, max:477233152
Current Usage : init:119341056, used:67784800, committed:133550080, max:477233152
|------------------| committed:127,36Mb
+---------------------------------------------------------------------+
|///////// |
| max:455,12Mb
+---------------------------------------------------------------------+
|--------| used:64,64Mb
Peak Usage - valores máximos (picos) de uso, pedido (committed) y memoria máxima que se dispone
Current Usage - valores actuales de uso, pedido de memoria y memoria máxima que se dispone
La gráfica nos muestra estos valores:
committed (en este ejemplo 127.36Mb)
maxímo que se puede usuar (en este ejemplo 455.12Mb)
y el valor actual (en este ejemplo 64.64Mb)
en caso de que jboss llegue al máximo se corre el riesgo de tener una caida del server,
por lo cual es bueno chequear estos valores, y de ser necesario corregir la memoria asignada
al Jboss
Para ver como cambián lo valores se pude cargar un cubo en el portal o en el browser y en la página del monitoreo hacer F5 o reload
VER ADEMÁS
el artículo Memory Management
HowTo ocultar o modificar la pagina de inicio de JBoss
Contexto
Este HowTo explica cómo ocultar o modificar la página de inicio de jboss, a la que se accede en http://servidor:8080.
Esta página se genera con el index.html, que se encuentra en:
<InstalaciónO3>\jboss\server\default\depoly\jboss-web-depolyer\ROOT.war
Por ser un archivo html, su edición es relativamente sencilla. Las modificaciones habituales a este archivo son:
1. Deshabilitar la jmx-console (ver: Cambiar o deshabilitar la password de la jmx-console)
2. Ocultar todos los links, dejando título, etc.
Para esto comentar o eliminar los links (tags href) a continuación de JBoss Online Resources y/o JBoss Management.
3. Dejar la página en blanco.
Eliminar todo el contenido de la página, desde <head> hasta </head> y desde <body> hasta </body> inclusive.
4. Redireccionar a otro sitio, por ejemplo al O3 Portal.
Eliminar todo el contenido, igual que en la opción anterior, y agregar tag:
<meta http-equiv="Refresh" content="5; url=http://servername:8080/o3portal">
HowTo patch para problemas de consumo de memoria
IMPORTANTE
Condiciones que justifican el patch
En entornos de trabajo donde el uso del portal es alto, y se nota una degradación del servicio y posterior caída del server.
Condiciones que pueden agravar el comportamiento, la reconstrucción de muchos cubos en forma seguida.
Soluciones al problema
Hay 2 patch desarrolados por Idesoft para tomcat, según si la versión de O3 es menor a 4.1.x o mayor o igual que 4.1.x.
Se debe de ser cuidadoso en no poner un patch por otro. Si su versión es 4.2.001 o posterior, el patch NO es necesario, ya esta incluido en la
distribución de O3.
Otras formas de detectar el problema
Desde el admserver ver que los cubos que quedan abiertos por mas de media hora luego que se cerraron la sesiones.
Ver el wiki "HowTo monitorear uso de memoria del Jboss" para aprender sobre cómo ver la memoria usada por jboss .
PARCHEAR EL JBOSS
1.
2.
3.
4.
5.
6.
bajar el servidor jboss si lo tenemos corriendo
pararse en el directorio de instalción de O3
desde ahí ir al directorio jboss/server/default/deploy/jbossweb-tomcat55.sar
renombrar el archivo catalina.jar (ej #catalina.jar)
agregar el archivo catalina.jar nuevo. Precaución con la versión del patch según el O3 instaldo tener en cuenta que los nombre bajados
se les debe de renombrar como catalina.jar, no se debe de dejar el nombre con que se bajo.
6. reinicar el jboss
BAJAR LOS ARCHIVOS
Ir al tab de adjuntar y bajar el que corresponda a su versión
VERIFICANDO LA ACTUALIZACIÓN
Luego de conectarnos con cualquier aplicación al server en el log debería de aparacer
INFO [[/o3portal]] Tomcat 5.5.9, accessCount patch by Ideasoft
HowTo Workaround problema nombre del server
Problema
Cuando se generan reglas, o desktop en el browser y luego se quieren ver desde el portal, las reglas no se pintan y los desktop no se ven
generando un error
workaround
Ir a
/<O3>/jboss/server/default/deploy/gserver/0o3.ear/o3portal.war/WEB-INF y buscar el archivo webapp.properties
Cambiar
gclient.server.host
= localhost
gclient.server.host
= nombre_del_servidor
por
O3 Consideraciones de Seguridad
Consideraciones de Seguridad sobre el acceso a través de Internet a O3
La exposición del servidor de O3 a Internet abre un conjunto de riesgos de seguridad, como ocurre con cualquier aplicación, este artículo analiza
diferentes escenarios de seguridad y le asigna diferentes niveles de recomendación:
Escenario
Descripción
Web con
Proxy
Consiste en utilizar herramientas adicionales para permitir el acceso desde Internet a un servidor de O3
(ubicado por ejemplo en una DMZ). Se lo utiliza para exponer el servicio a internet permitiendo el acceso
por ej. a http://www.servidor_empresarial.com/o3portal
Recomendación
, incluso cuando servidor_empresarial no es el que contiene a O3
Puerto 8080
expuesto a
Internet
Consiste en exponer el puerto 8080 a internet a través de una tercera máquina.
Por ejemplo con un firewall delante haciendo NAT
Máquina
expuesta a
internet
Consiste en tener la máquina sin ningún tipo de protección conectada a internet
Para cada uno de estos escenarios se realizan las siguientes recomendaciones, algunas de ellas están basadas en sugerencias de seguridad de
JBoss: http://community.jboss.org/wiki/SecureJboss
Web con Proxy
Este mecanismo es el recomendado ya que brinda la mayor seguridad, dado que se accede desde internet sólo a la funcionalidad permitida.
En este caso se utiliza un servidor Web con capacidad de proxy (por ejemplo Apache o IIS ) se recomiendo para este caso el uso de un módulo
que haga de puente entre el servidor web y el tomcat (el más recomendado es JK Mount).
Se debe hacer proxy de las siguientes aplicaciones Web de O3:
/o3portal
/cas
/eportal
/o3report
Puerto 8080 expuesto a Internet
En este caso se exponen todas las aplicaciones Web publicadas en el servidor JBoss de O3 a internet (por ejemplo realizando NAT en un
firewall), por lo tanto deben tomarse las siguientes medidas:
Cambiar la password de la consola JMX (jmx-console): Cambio de password en el caso que estemos en la versión > 5.2.004 ir directo al
punto 3 ya que solo se necesita cambiar la password.
Eliminar "invokers" de JBoss: http://community.jboss.org/wiki/RemoveTheInvokers
Deshabilitar la característica de RMIClassLoading de JBoss: http://community.jboss.org/wiki/RMIClassLoadingService
En futuras versiones estas últimas características serán deshabilitadas en el JBoss utilizado en O3.
Máquina expuesta a Internet
Este caso es altamente contraindicado, expone a todos los servicios del servidor y no sólo a O3 a ataques externos.
Si a pesar de esta indicación, se utiliza este mecanismo, se deben seguir todas las recomendaciones de la siguiente página de JBoss:
http://community.jboss.org/wiki/SecureJboss, tener en cuenta que con este mecanismo sólo se asegura el servidor JBoss de O3 pero no
los demás servicios disponibles en la máquina
Sobre estos cambios al Servidor
La aplicación de los ajustes recomendados en está página al Servidor de O3 no afectan los Servicios de Asistencia y Respaldo
que una instalación concreta pudiera contar (según corresponda al modo de licenciamiento, plazo, servicios de asistencia,
etc.), ya que se consideran cambios de configuración soportados.
Hacemos esta aclaración en respuesta a consultas de nuestros clientes.
Diseño de modelos multidimensionales
Ayudas y explicaciones de cómo realizar diseños de modelos multidimensionales.
Cómo se usan los distintos métodos de agregación para saldos
Tips de Diseño
Cómo se usan los distintos métodos de agregación para saldos
Método de Agregación para Saldos
O3 ofrece un conjunto de mecanismos de agregación orientados a tomar información en función de la disponibilidad de la misma con respecto a
una dimensión de tipo fecha. Este mecanismo es el adecuado cuando se hace una consulta y se quiere obtener la informaicón más actualizada
con respecto a la fecha que está siendo consultada.
A continuación se describen para un caso los tres mecanismos disponibles, el tercero Primero/Ultimo con datos fue introducido en la versión 5.0
Para estos ejemplos, se presenta cual es la información disponible en un modelo multidimensional para tres artículo y para la medida Stock
Disponible. En los tres casos se muestra el resultado de consultar a nivel de Mes.
Primero/Último (first/last member in dimension)
Nos trae los datos para el primer/último período sin importar si tiene datos o no. Veamos con un ejemplo, en este caso un stock de 3 artículos
Artículo
20/1
22/1
23/1
24/1
25/1
26/1
27/1
28/1
29/1
30/1
31/1
último
Art.1
4
2
8
10
15
Art.2
4
2
8
10
15
Art.3
7
2
4
10
1
1
25
10
5
6
12
12
0/nan
1
21
10
5
0/nan
Si los datos no tuvieran valor para el último día del mes, el resultado de la consulta sería todo 0/nan.
Artículo
20/1
22/1
23/1
24/1
25/1
26/1
27/1
28/1
29/1
30/1
Art.1
4
2
8
10
15
1
25
10
5
6
Art.2
4
2
8
10
15
Art.3
7
2
4
10
1
31/1
Último
0/nan
0/nan
1
21
10
5
0/nan
Primero/Último dinámico (dinamic first/last)
Nos trae los datos para el primer/último período en el cual hubieron datos. Para ejemplificar, volviendo al caso del stock mercaderías. Al pedir el
stock a fin de mes me retornarían no solo los productos que se movieron ese día, sino los de días anteriores que tuvieron movientos.
Nótese que para elementos diferentes se traen datos de fechas diferentes
Artículo
20/1
22/1
23/1
24/1
25/1
26/1
27/1
28/1
29/1
30/1
31/1
Último Dinámico
Art.1
4
2
8
10
15
1
25
10
5
6
12
12
Art.2
4
2
8
10
15
Art.3
7
2
4
10
1
1
21
10
5
Artículo
20/1
22/1
23/1
24/1
25/1
26/1
27/1
28/1
29/1
30/1
Art.1
4
2
8
10
15
1
25
10
5
6
Art.2
4
2
8
10
15
Art.3
7
2
4
10
1
15
5
31/1
Último Dinámico
6
15
1
21
10
5
5
Primero/Último con datos (First/Last with data)
Nos trae los datos para el primer/último período en el cual para algún elemento al menos existen datos, de nuevo supongamos el caso del stock.
Notese que en este caso para el día 31 no hay datos pero si para el día 30 (art.1)
Artículo
20/1
22/1
23/1
24/1
25/1
26/1
27/1
28/1
29/1
30/1
31/1
Último con Datos
Art.1
4
2
8
10
15
1
25
10
5
6
12
12
Art.2
4
2
8
10
15
Art.3
7
2
4
10
1
1
21
10
3
5
Artículo
20/1
22/1
23/1
24/1
25/1
26/1
27/1
28/1
29/1
30/1
Art.1
4
2
8
10
15
1
25
10
5
6
Art.2
4
2
8
10
15
Art.3
7
2
4
10
1
0/nan
1
21
10
3
5
Tips de Diseño de Modelos Multidimensionales
Descripción
31/1
Último con Datos
6
0/nan
Tips de Diseño
Tip
0/nan
5
Convirtiendo Saldos en
Movimientos
Este tip surgió del análisis de un proyecto en un Banco para el cual se tenían los saldos mes a mes y era
necesario obtener los movimientos mensuales a partir de dichos saldos.
Si bien una solución podría haber sido realizar consultas anidadas que realizaran varias pasadas por los datos
para realizar los ajustes, este tip permite obtener el mismo resultado en forma más eficiente y elegante
utilizando mecanismos de O3.
Cortesía de Luis Berretta y Nicolás Palombo
Agregando Datos de
Entrada
Este tip expresa un mecanismo para incorporar datos que no existen en las fuentes de datos y que su uso es
exclusivo para la construcción de un cubo O3. Es una alternativa siempre que la generación de un archivo txt y
la creación de una tabla específica resulten incómodos.
Customizando las plantillas
de páginas en ePortal
En este tip se comenta una alternativa para cambiar las proporciones de las plantillas de páginas por defecto
con el objetivo de cubrir requerimientos específicos de diseño de páginas.
Accediendo a bases de
datos desde BeanShell
Se incluye en este tip codigo BeanShell para acceder directamente a bases de datos permitiendo un mayor
control sobre las fuentes de datos.
Operando en tablas con
cantidades variables de filas
y columnas
Es común la necesidad de referenciar filas o columnas en fórmulas a para generar vistas particulares. Pero,
¿qué pasa si es necesario referenciar las filas o columnas en base a su ubicación y la cantidad de columnas o
filas es dinámica?.
La solución viene por recordar la utilidad de la funcion Cant() aplicada a un ejemplo donde se calculan
variaciones diarias de saldos contables a pesar que no existen saldos en fines de semana y feriados.
Comparando los valores de
un día respecto al promedio
de los últimos N
Este tip surgió del análisis de alternativas para ofrecer la comparación de ventas de un día respecto al promedio
de venta de los últimos 60 días.
Agregando datos de entrada
Agregando datos de entrada
En diversas ocasiones necesitamos incorporar al modelo O3 un
catálogo ó una codificación que no existe en ninguna fuente de
datos. En la mayoría de los casos la solución que encontramos es
generar un archivo txt o incluso crear una tabla en la BD para que
el cubo se ajuste a las necesidades. Pero es cierto que ambas
alternativas pueden generarnos inconvenientes, la ubicación del
archivo, la posibilidad de poder crear una tabla, etc. Este tip de
diseño introduce una nuevo tipo de fuente de datos que ofrece
una excelente alternativa al problema.
El nuevo tipo de fuente de datos se identifica con el nodo de
etiqueta "Script". El mismo no requiere configuración de ningún
tipo por lo que simplemente se deben agregar las fuentes de
datos deseadas.
A continuación se ofrecen algunos ejemplos de fuentes de datos
generados a través de scripts:
ArrayList list = new ArrayList();
list.add(new Object[]{0, "Activos"});
list.add(new Object[]{1, "Pasivos"});
iterator = list.iterator();
Esta consulta nos permite tener una fuente de datos con los
valores:
0
Activos
1
Pasivos
Ejemplo de datos de entrada de tipo fecha
ArrayList list = new ArrayList();
list.add(new Object[]{new Date(2008-1900, 0, 1)});
iterator = list.iterator();
Esta consulta nos permite tener una fuente de datos con los valores:
01/01/2008
El año es base 1900, el mes es base 0 (0 es enero, 1 febrero, etc) y el dia es normal. El orden de los argumentos es: año, mes, dia
A partir del uso de scripts como consultas, se comprende que su potencial permite realizar procedimientos mucho más complejos y elaborados.
En la medida que sean útiles dichas implementaciones se pueden incorporar a esta página como nuevos ejemplos.
Comparando los valores de un día respecto al promedio de los últimos N
Situación
Esta tip de diseño trata de mostrar diferentes alternativas disponibles en distintas versiones de O3 al momento de resolver la comparación de
valores de un día respecto al promedio de los valores de los últimos 5 días por ejemplo. Tomamos el caso de importes vendidos como se detalla
en el siguiente cuadro y evaluamos las distintas posibilidades de comparación de las ventas del día lunes 20/dic respecto al promedio de venta
de los últimos 5 días.
Soluciones
De manera práctica se presentan distintos enfoques/soluciones relativos al caso, y a su vez se ofrecen elementos para mejorar la comprensión
de algunas nuevas funcionalidades de O3.
Alternativa 1
Una primer alternativa corresponde a utilizar una fecha relativa para identificar los últimos 5 días y agregar una fila calculadas en O3 Browser
que muestre el promedio de los valores. Dependiendo si ocultamos ó no los "ceros" se calcula el promedio correspondiente.
Esta alternativa es directa, está disponible en todas las versiones de O3, pero tiene limitantes en la medida que exige la visualización de todos
los días del período y hace complejo el uso de los valor del último día y el promedio en apertura por dimensiones y en potenciales expresiones
calculadas o reglas.
Alternativa 2
Una segunda alternativa corresponde a utilizar una nueva medida derivada de Acumulación por Fecha de tipo "smoothed". En la definición de la
medida basta con indicar el período de 5 días.
Esta alternativa, también disponible en versiones 4 y 5 de O3 permite visualizar no sólo el promedio de los últimos 5 días respecto a la última
fecha, sino también la evolución histórica del promedio de los últimos 5, lo que puede ser fácilmente graficado en O3. Notar que la medida de
tipo smoothed considera la totalidad de los días independientemente de la existencia ó no de datos al momento de realizar el promedio. Por ello,
el cálculo del promedio responde a:
Promedio en Ultimos 5 días calendario = Importe de venta en últimos 5 días / 5 días = 900 / 5 = 180
El análisis con O3 Browser permite obtener cuadros y gráficos como los siguientes:
Sin embargo, puede que no sea lo ideal dado que en ciertas circunstancias puede ser requerido evitar que el promedio de los últimos 5 días
considere los días sin ventas.
Alternativa 3
Una tercer alternativa intenta mostrar otro enfoque para la solución en donde se corrige el promedio sin días de venta.
Consiste en agregar una nueva fuente de datos al modelo referida a una lista de los días de venta, por ejemplo realizando una consulta SQL del
estilo "select distinct fecha, 1 as días from ventas...". Y agregar una nueva medida llamada "Días de Venta" que sume el valor 1 por cada día de
venta y cuyo alcance sea total sobre la dimensión fecha pero constante para el resto de las dimensiones.
Luego, basta con definir una medida derivada que divida el importe de venta entre la cantidad de días, para obtener el promedio buscado donde
no participen los días domingo. Por tanto, tal como puede apreciarse en las imágenes, el cálculo responde a:
Promedio en Últimos 4 días de venta = Importe de venta en últimos 5 días / 4 días de venta = 900 / 4 = 225
Para hacer uso de ésta solución se definen las fechas relativas correspondientes a distintos períodos, por ejemplo Últimos 5, 10, 15 o 30 días por
ejemplo y se obtienen los promedios correspondientes a cada período con tal sólo cambiar la fecha relativa utilizada.
Si además fuese necesario disponer de la fecha del último día, por ejemplo para comparar el valor del día con el promedio, puede agregarse una
nueva medida básica con fecha especial de agregación de último dinámico en la dimensión fecha. Con ello logramos tener en la misma grilla e
valor de último día y el promedio de los últimos 5 días sin contar el día sin ventas.
La ventaja de esta solución radica en utilizar las mismas medidas y sólo variar la fecha relativa para comparar distintos períodos. Sin embargo
dicha ventaja hace que perdamos la posibilidad de graficar la evolución histórica de los promedios como lo teníamos con el smooth.
Alternativa 4
La siguiente alternativa disponible a partir de la versión 5.3 de O3 intenta satisfacer la potencialidad del smooth y a su vez evitar los días sin
ventas en el cálculo del promedio. Para ello hay que definir las medidas "Días de Venta" propuesta en la alternativa 3 y dos nuevas medidas
derivadas de acumulación por fecha por nivel superior indicando "Acumular últimos períodos hasta el actual". Una de dichas medida debe
considerar la medida básica de importes de venta mientras que la otra hace referencia a la medida básica de días de venta. En ambas medidas
se indica el mismo período, por ejemplo 5 días. En estas medidas puede justificarse declarar que sean ocultas a los usuarios finales.
Por último se agrega una nueva medida derivada que divide las anteriores (Acumulado de importes / Acumulado de días) obteniendo el
promedio. La medida resultante permite el análisis histórico de la evolución de los promedios, sin contar los días sin ventas y permitiendo la
comparación con las ventas diarias históricas.
Observar que utilizando una nueva funcionalidad de la versión 5.4 de O3 podemos indicar a la medida promedio como secundaria, y en tal caso
ocultar del gráfico los cálculos correspondientes a los días domingo. La gráfica resultante de evolución histórica del promedio se visualiza a
continuación.
Customizando las plantillas de páginas en ePortal
El uso de un numero limitado de plantillas de páginas en el ePortal permite estandarizar el diseño, mejorando la usabilidad. De lo contrario el
usuario se debe enfrentar patrones de diseño muy disimiles a lo largo de las diferentes páginas de los portales.
Existen ciertas situaciones, como páginas de inicio, gráficos o tablas especiales, donde las plantillas de páginas disponibles no permiten lograr el
efecto de diseño requerido para facilitar su comprensión.
En lugar de agregar nuevas plantillas de página, es posible modificar las proporciones de las planillas disponibles utilizando las propiedades de
estilo de cada página.
Las proporciones de las plantillas disponibles por defecto están configuradas utilizando estilos y debido a que la propiedad de estilo en cada
pagina sobrescribe los estilos del tema, es posible cambiar las proporciones de las plantillas en cada página.
Para ello es necesario conocer el diseño y estilo de cada plantilla para modificar la propiedad correcta. En general las plantillas disponibles están
diseñadas a partir de tablas, donde las celdas que condenaran los porlets poseen identificadores (id) de la forma column-1, column-2, etc..
También utilizan el clasificador de estilo (class) lfr-column y dependiendo del tamaño se utilizan los clasificadores thirty, fifty, seventy, twenty,
sixty, etc..
Por ejemplo para modificar el ancho por defecto de la primer columna a un 30% de la pantalla se incluye la siguiente linea en la propiedad css de
la página:
#column-1 { width: 30% }
En forma alternativa es posible también cambiar el clasificador de tamaño incluyendo la siguiente linea:
.sixty { width: 20% }
En conclución modificando los estilos de cada página se dispone de un mayor control sin definir nuevas plantillas.
Accediendo a bases de datos desde BeanShell
A partir de la version 5 es posible incluir en los modelos de O3 fuentes de datos definidas desde scripts de BeanShell.
Este lenguaje permite en particular utilizar jdbc para acceder a bases de datos desde el script obteniendo de esta forma un mayor control sobre
las fuentes de datos en la construcción.
Con el siguiente codigo se muestra como acceder a la base de datos Hypersonic incluida en la distribución.
import
import
import
import
java.sql.DriverManager;
org.hsqldb.jdbcDriver;
java.sql.SQLException;
java.sql.*;
db_url = "jdbc:hsqldb:hsql://localhost:1701";
driver = "org.hsqldb.jdbcDriver";
user = "sa";
password = "";
sql_statement = "SELECT * FROM VINOS_VENTAS;";
ArrayList list = new ArrayList();
try {
Class.forName(driver);
Connection con = DriverManager.getConnection(db_url,user,password);
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(sql_statement);
while (rs.next()) {
list.add(new Object[]{rs.getDate("FECHA"),rs.getInt("VINOCOD"),rs.getDouble("LITROS")});
}
stmt.close();
con.close();
} catch ( e ) {
e.printStackTrace();
}
iterator = list.iterator();
Con el siguiente codigo se muestra como acceder a una base de datos SQL Server Express.
import
import
import
import
java.sql.DriverManager;
org.hsqldb.jdbcDriver;
java.sql.SQLException;
java.sql.*;
db_url = "jdbc:sqlserver://infogen01\\SQLEXPRESS;DatabaseName=Master";
driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
user = "sa";
password = "qapmoc8";
sql_statement = "select * from dbo.spt_values;";
ArrayList list = new ArrayList();
try {
Class.forName(driver);
Connection con = DriverManager.getConnection(db_url,user,password);
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(sql_statement);
while (rs.next()) {
list.add(new Object[]{rs.getString("name"),rs.getInt("number")});
}
stmt.close();
con.close();
} catch ( e ) {
e.printStackTrace();
}
iterator = list.iterator();
Definición de Medida Derivada de tipo 'Count Distinct'
Definición
La finalidad de una medida derivada de tipo 'Count distinct' es contar elementos distintos de un nivel de una dimensión, que tengan valor para
una medida básica dada.
Para crear una medida de tipo 'Count Distinct' se agrega una nueva medida declarándola como derivada (pestaña 'General'), y se selecciona la
opción 'Contar Distintos'.
Luego se debe elegir la dimensión, y el nivel de la dimensión sobre el cual se contarán los elementos distintos. Finalmente se debe elegir la
medida básica.
La siguiente imagen muestra la creación en el modelo de 'Ventas Mundiales' de una medida de nombre 'Contar Distintos Clientes' de tipo 'Count
Distinct', que cuenta elementos distintos del nivel 'Cliente' en la dimensión 'Clientes' que tienen valores en la medida de 'Unidades Vendidas'
(para contar clientes distintos que han vendido algún producto).
Ejemplo de Uso
Retomando la medida de tipo 'Count Distinct' vista en la sección anterior, que refleja la cantidad de clientes distintos que han vendido algún
producto, veamos un ejemplo de su uso para fijar ideas.
Supongamos que queremos estudiar la cantidad de clientes de un país a los cuales se vendió un producto en particular, en este caso, clientes
del país 'Estados Unidos' a los que se han vendido el producto 'Espárragos'. Para ésto, cruzamos la dimensión 'Ubicación' a nivel de 'País' con la
dimensión 'Productos', estudiando la medida 'Contar Distintos Clientes', resultando que son 9 los clientes de 'Estados Unidos' compradores de
'Espárragos' (ver imágen inferior).
Si bajamos un nivel a 'Ciudad' en la dimensión 'Ubicación', se puede ver como se distribuyen por ciudad los clientes distintos compradores de
'Espárragos' (por ej. en la ciudad de Chicago existen 3 clientes distintos compradores, ver imágen inferior).
Es de notar que como era de esperar la suma total de los clientes distintos de cada ciudad es mayor a 9, que era el total de clientes distintos en
el país. Lo que ocurre es que en distintas ciudades se ha vendido el producto al mismo cliente (ciertos clientes cuentan con sedes en varias
ciudades), por lo que al estudiar a nivel de país se cuentan clientes distintos, no se acumulan distintas sedes del mismo cliente (ver imágen
inferior).
Operando en tablas con cantidades variables de filas y columnas
Es común la necesidad de referenciar filas o columnas en fórmulas a para generar vistas particulares. Pero ¿qué pasa si es necesario referenciar
las filas o columnas en base a su ubicación y la cantidad de columnas o filas es dinámica?
La idea general, es recordar que disponemos de la función Cant() y que el resultado de la misma puede ser utilizada como índice en la propia
expresión.
Veamos un ejemplo:
Se requiere conocer la variación del Saldo de cada Residencia, como la diferencia del último saldo respecto al saldo del día anterior.
Solución:
Elaborar una vista de O3 que diariamente muestre los últimos días, y en particular calcule la variación de los últimos 2.
Como primer paso, necesitamos una fecha relativa con refinamiento por día donde elegimos arbitrariamente que tome los "Ultimos 7 días".
Una vez en la tabla, ubicamos la dimensión de elementos (en éste ejemplo Residencias) en el eje vertical y la fecha relativa recién indicada
(Ultimos 7 días) en el eje horizontal. Teniendo en cuenta que debemos realizar una Exploración Avanzada con Nivel Día sobre dicha fecha
relativa para que la vista directamente nos muestre los días.
Sucede que la cantidad de días no tiene porqué ser 7, ya que no dispongo de saldos durante los fines de semana y feriados. Por lo cual, la vista
puede devolverme una cantidad dinámica de columnas y necesito realizar la diferencia de las 2 últimas, para obtener la variación solicitada. En la
siguiente imágen se muestra la vista:
La cual se logra definiendo una nueva función
(llamada VARIACION en el ejemplo) basada
en la expresión abajo indicada y obteniendo el
resultado esperado.
aux=Entero(Cant([this]));
[this.leaf(aux-1)]-[this.leaf(aux-2)]
SaldosAMovimientos
Calculando Movimientos a partir de Saldos
Este tip de diseño pretende solucionar la siguiente situación:
Se tiene una fuente de datos que presenta el saldo de una cuenta para cada mes. Estos saldos además se van acumulando dentro del semestre,
es decir que tanto Enero como Julio tienen como saldo el monto efectivamente movilizado en ese mes. El resto de los meses presenta la
acumulación de los meses anteriores dentro del semestre.
La siguiente tabla ilustra esta situación, donde se agregó la columna Movimiento que debe calcularse a partir del Saldo
Mes
Saldo
Movimiento
1
10
10
2
15
5
3
17
2
4
20
3
5
18
-2
6
21
3
7
17
17
8
11
-6
9
7
-4
10
22
15
11
31
9
12
27
-4
Si bien una alternativa es realizar el cálculo los movimientos directamente en la consulta de los saldos mediante consultas anidadas, estas
requieren varias pasadas sobre los datos.
En primer lugar es necesario resaltar las características de esta situación
El monto del Movimiento para cada mes se calcula como el Saldo del mes corriente menos el Saldo del mes anterior
Para los meses de Enero y Julio el Saldo y el Movimiento coinciden
Considerando estas características es posible encontrar una solución más eficiente y elegante utilizando mecanismos de O3 de la siguiente
forma:
Por cada registro leido de la consulta de Saldos, se generan datos para el mes indicado en el registro (mes corriente) y para el mes siguiente. El
monto asociado al mes corriente coincide con el Saldo, y para el mes siguiente se le asigna el Saldo con signo cambiado. Sería como "restar" el
Saldo.
Con esta solución cada registro de la consulta de Saldos genera 2 tuplas en el cubo tal como se ilustra en la siguiente tabla:
Mes
Saldo
Mes
Valor
1
10
1
2
10
-10
2
15
2
3
15
-15
3
17
3
4
17
-17
4
20
4
5
20
-20
5
18
5
6
18
-18
6
21
6
7
21
0
7
17
7
8
17
-17
8
11
8
9
11
-11
9
7
9
10
7
-7
10
22
10
11
22
-22
11
31
11
12
31
-31
12
27
12
1
27
0
Notar los ceros que se muestran en rojo que son generados debido a que los saldos se acumulan dentro del semestre por lo que para los meses
de Enero y Julio no deben realizarse ajustes.
De esta forma una vez construido el cubo la columna que figura en la tabla como Valor presentará el movimiento en cada mes ya que se obtiene
como el saldo corriente menos el saldo del mes anterior.
La mejor forma de implementar esto en un modelo de O3 es de la siguiente forma:
1. Se define la consulta de Saldos tal como se lo haría para construir la medida de Saldos con la salvedad que se le indica que construye 2
Tuplas por Registro
2. Se construyen dos campos virtuales, uno para calcular la Fecha y otro para calcular el Valor que se le asignará a la medida
Movimiento.
Los campos virtuales serían de la siguiente forma:
Campo Virtual para la Fecha
mes=Month(FechaParaMensual);
año=Year(FechaParaMensual);
mesSig=(mes==12) ? 1 : mes+1;
añoSig=(mes==12) ? año+1 : año;
Choose(TN, FechaParaMensual, Date(1,mesSig,añoSig))
Campo Virtual para el Valor
mes=Month(FechaParaMensual);
ultimoMes=Month(Date(1,12,2007));
Ajuste=((mes==ultimoMes) || (mes==12) || (mes==6)) ? 0 : -SaldoParaMensual;
(TN==2 && Ajuste==0) ? Skip() : Choose(TN, SaldoParaMensual, Ajuste)
Estos dos campos virtuales son los que hacen el truco de generar los Saldos corridos ajustados por signo que permiten calcular los movimientos.
Estas expresiones tienen además algunas particularidades que se marcaron en rojo y esto se debe a que el campo para calcular el Valor no
debe generar valores para meses para los cuales no existe un saldo, es decir que si los saldos existen hasta el mes de Agosto, no se deberá
calcular el ajuste para el mes de Setiembre o éste presentaría un movimiento negativo incorrecto.
Con estos ajustes se detecta el último mes (que en este ejemplo se dejó fijo como una constante) y se saltea el procesamiento del registro
cuando se trata del ajuste y de un mes que no corresponde calcular.
Si bien en este ejemplo se definió el último mes como una constante en la expresión, es posible hacer algo más realista a través de una
consulta sobre la tabla de Saldos que devuelva un único registro con la máxima fecha. Esta consulta luego puede convertirse en tabla local para
recuperar dicho valor desde el campo virtual.
A modo de ejemplo se anexan unos archivos que ilustran este tip
Archivo
Descripción
Saldos.mdl
Modelo de ejemplo que implementa este Tip de Diseño
Saldos.cube
Cubo construido con datos de ejemplo. Este cubo incluye el Saldo y el Movimiento obtenidos de la fuente de datos, así como
el Movimiento calculado a partir del mecanismo indicado en esta página usando los Saldos
Saldos.txt
Fuente de datos para los Saldos. Incluye la columna de Movimientos para poder comparar dicho valor con el calculado con el
mecanismo indicado en esta página
Parametros.txt
Fuente auxiliar para ejemplificar el mecanismo de comparación con la última fecha. Este archivo debería reemplazarse por
una consulta del estilo
SELECT 'UltimaFecha' AS Parametro, MAX(Fecha) AS Valor FROM Saldo
Saldos.xls
Planilla Excel utilizada para generar los datos para este ejemplo
How To O3 Browser
Ayudas y explicaciones de cómo realizar operaciones con el componente O3Browser.
¿Cómo hacer para que browser -debug escriba en el log, para clientes en los que se instaló por javaws?
HowTo Accediendo a cubos de MSAS
¿Cómo hacer para que browser -debug escriba en el log, para clientes en los
que se instaló por javaws?
IMPORTANTE:
esto es válido para las versiones <= 4.1.300 ya que las posteriores quedará solucionado
Procedimiento:
1.
2.
3.
4.
5.
6.
7.
ir al directorio donde está instalado O3
de ahí ir al directorio jboss/server/default/deploy/gserver/Oo3.ear
localizar el archivo o3-installer-4.1.300.war y renombrarlo ej #o3-installer-4.1.300.war (puede variar el número de acuerdo a la versión)
crear ahí mismo una carpeta con el nombre o3-installer-4.1.300.war
descomprimir el archivo o3-installer-4.1.300.war en la carpeta creada
localizar el archivo o3-installer.jnlp, y abrirlo con un editor de texto
sobre el final del archivo deberías de encontrar algo como esto
<application-desc main-class="com.ideasoft.app.AppMain">
<argument>ideasoft.o3.browser.BrowserLauncher</argument>
<argument>-debug</argument>
</application-desc>
8. insertar:
<argument>-logfile=.o3/Jws/log/browser.log</argument>
de modo que quede asi:
<application-desc main-class="com.ideasoft.app.AppMain">
<argument>ideasoft.o3.browser.BrowserLauncher</argument>
<argument>-debug</argument>
<argument>-logfile=.o3/Jws/log/browser.log</argument>
</application-desc>
9. reiniciá el jboss y volvé a correr la aplicación
10. los log del browser quedarán en una carpeta dentro del usuario .o3/Jws/log/browser.log
HowTo Accediendo a cubos de MSAS
Contexto: O3 v4, SQL server 2000
Para acceder a cubos generados con Microsoft Analysis Services, hay que usar una URL de la forma:
mdx://<nombre maquina>[/<nombre proveedor>]/<nombre de la bd>/<nombre del cubo>
<nombre de la maquina> donde se encuentra el Analysis Services
<nombre del proveedor> no es obligatorio, se asume MSOLAP
<nombre de la bd> nombre de la base de datos en el Analysis Services
Hay que tomar en cuenta que MSAS es "case sensitive", segun pruebas realizadas,
no es lo mismo:
mdx://deimos/O3 Demo/Demo
que
mdx://deimos/O3 Demo/demo,
o
mdx://deimos/O3 demo/Demo
siendo "deimos" el nombre de la maquina donde reside el servidor de Analysis Services (MSAS), que es case insensitive, "O3 Demo" el nombre
del catalogo o base de datos donde residen los cubos y "Demo" el nombre del cubo
En caso de que el browser de O3 no pueda abrir cubos de MSAS haciendo referencia a problemas con la operacion Open de algo relacionado a
"ado", se sugiere intentar alguno de los siguientes pasos:
- si tiene instalado el cliente completo de MSAS, apliquele el service pack 3 que se encuentra bajo SQL2000 ->servicepack3 -> microsoft ->
sql2kasp3.exe
- si solo quiere el minimo requerido, desinstale (quite el software) el cliente MSAS o el Pivot Table Service (PTS). Luego instale el PTS service
pack 3 que se encuentra bajo SQL2000 ->servicepack3 -> AnalysisServicesClient -> PTS -> ptsfull.exe
How To O3 Designer
Ayudas y explicaciones de cómo realizar operaciones con el componente O3Studio.
Drivers JDBC más utilizados
HowTo Accediendo a datos de Lotus Notes
HowTo Accediendo archivos DBF y Excel
HowTo Envio de mail con servidor SMTP que requiere TLS
How to Utilizando drivers ODBC de 32 bits en SO de 64 bits
How To Utilizando drivers ODBC para archivos de texto (ASCII)
Usando la función debug() para ver expresiones calculadas
Drivers JDBC más utilizados
La que sigue es una lista de drivers JDBC usados con mayor frecuencia. Para cada uno se especifica el nombre de la clase y la sintaxis para su
URL jdbc.
Importante: Recordar cómo se divide la URL jdbc para colocarla en la definición de la conexión en O3Designer.
Dada la url jdbc:<sub-protocol>:<driver & database specific parameters>, luego en el panel de conexión se coloca lo siguiente:
Protocolo: <sub-protocol>
Parámetros: <driver & database specific parameters>
Por ejemplo, la url de MySql jdbc:mysql://{hostIP | hostName}:port/database se dividiría así:
Protocolo: mysql
Parámetros: //{hostIP | hostName}:port/database
Para conocer mas en detalle cómo definir conexiones a otras Bases de Datos recomendamos consultar el documento que se adjunta a esta
página (solo disponble versión en inglés).
Oracle
Informix
Microsoft SQL Server
JTurbo
Inetdae
MySQL
Essentia
Postgres
DB2 AS400
DB2 UDB
Relativity
Firebird
DBF y Excel
ORACLE
Clase:
oracle.jdbc.driver.OracleDriver
URL:
jdbc:oracle:thin:@{hostIP | hostName}:port:SID
Default port: 1521
Ejemplo en O3Designer:
Cambio en driver de Oracle
A partir de la versión del driver para Oracle 11, no existe más la clase oracle.jdbc.driver.OracleDriver.
Se debe usar la clase oracle.jdbc.OracleDriver en su lugar.
Los drivers para la version 10g ya traen las 2 versiones de la clase, asi que se debe hacer el cambio desde ahora.
Problemas con el idioma del puesto cliente al conectarse a Oracle
Hemos experimentado inconvenientes al chequear la conexión a Oracle desde O3Studio, utilizando el driver ojdbc14.jar. El
problema se visualiza a través del siguiente error: "ORA-00604 "error ocurred at recursive SQL leel"... ORA-12705 "cannot
access NLS data files or invalid environment".
Otra situación donde es necesario aplicar la misma solución se detectó en consultas SQL utilizando driver ojdbc6 sobre Oracle
11g, en las cuales no se resuelven las conversiones numéricas y se visualiza el siguiente error: "ORA-01722: número no
válido".
Solución: Modificar el Regional Setting en el puesto cliente, seteando Estándares y Formatos: Inglés (Estados Unidos) y
Ubicación: Estados Unidos. Por ejemplo, indicando -Duser.language=en -Duser.region=US en las componentes de O3Studio.
Problemas con la zona horaria del puesto cliente al conectarse a Oracle
Hemos experimentado inconvenientes al chequear la conexión o verificar un modelo desde O3Studio, utilizando diferentes
driver. El problema se visualiza a través del siguiente error: "ORA-01882: timezone region not found".
Solución: Sí los componentes O3Designer, y O3Builder se ejecutan utilizando los archivos .exe, se debe agregar la siguiente
property en los archivos Designer.lax, Builder.lax (versiones <= 5.3), o Designer.vmoptions, Builder.vmoptions (versiones >=
5.4):
-Duser.timezone="GMT-3"
Sí se ejecutan utilizando los archivos .sh, se deben editar (designer.sh, builder.sh) y agregar la siguiente property:
PROPERTIES="$PROPERTIES -Duser.timezone=GMT-3"
Sí se ejecutan utilizando los archivos .bat, se deben editar (Designer.bat, Builder.bat) y agregar la siguiente property:
set PROPERTIES=%PROPERTIES% -Duser.timezone=GMT-3
INFORMIX
Clase:
com.informix.jdbc.IfxDriver
URL:
jdbc:informix-sqli://{hostIP | hostName}:port[/database]:INFORMIXSERVER=
serverName;[user=user;password=password][;name=value[;name=value]...]
Default port: 1533
Ejemplo en O3Designer:
Driver:
com.informix.jdbc.IfxDriver
Protocolo:
informix-sqli
Parámetros:
//{hostIP | hostName}:port[/database]:INFORMIXSERVER=
serverName;[user=user;password=password][;name=value[;name=value]...]
Microsoft SQL-SERVER
SQL-SERVER 2000 y 2005
La informacion siguiente es para el driver distribuido con O3, implementado por el archivo sqljdbc-1.0.809.102.jar, ubicado en el directorio
<O3>\classes\jdbc.
Clase:
com.microsoft.sqlserver.jdbc.SQLServerDriver
URL:
jdbc:sqlserver://{hostIP | hostName}[;DatabaseName =value[;property=value]...]
Default port: 1433
Ejemplo en O3Designer:
La informacion siguiente es para el driver distribuido por Microsoft, que consiste en los archivos msbase.jar, mssqlserver.jar y msutil.jar
(deben estar instalados en <O3>\classes\jdbc).
Clase:
com.microsoft.jdbc.sqlserver.SQLServerDriver
URL:
jdbc:microsoft:sqlserver://{hostIP | hostName}[;DatabaseName =value[;property=value]...
Default port: 1433
Ejemplo en O3Designer:
Driver:
com.microsoft.jdbc.sqlserver.SQLServerDriver
Protocolo:
microsoft:sqlserver
Parámetros:
//{hostIP | hostName}[;DatabaseName =value[;property=value]...
Clase:
connect.microsoft.MicrosoftDriver
URL:
jdbc:ff-microsoft://{hostIP | hostName}:port/database
Ejemplo en O3Designer:
Driver:
connect.microsoft.MicrosoftDriver
Protocolo:
ff-microsoft
Parámetros:
//{hostIP | hostName}:port/database
Por defecto SQL Server 2005 Express no tiene conectividad por TCP/IP disponible luego de la instalación. Es necesario ir al
SQL Server Configuration Manager. Bajo SQL Server 2005 Network Configuration, click en Protocols for SQLEXPRESS, click
on TCP/IP para dejarlo disponible.
Para configurar un puerto en particular y deshabilitar la asignación dinámica, se debe ir al nodo TCP/IP, botón derecho sobre
"IPAll" y abrir sus Propiedades. Se deja en blanco el valor de "TCP Dynamic Ports" y se adjudica el "TCP Port" al puerto que se
crea conveniente. Lo más usual es utilizar el puerto 1433 ó el puerto 1593.
JTurbo
Clase:
com.ashna.jturbo.driver.Driver
URL:
jdbc:JTurbo://{hostIP | hostName}:port/database
Ejemplo en O3Designer:
Driver:
com.ashna.jturbo.driver.Driver
Protocolo:
JTurbo
Parámetros:
//{hostIP | hostName}:port/database
Inetdae
Clase:
com.inet.tds.TdsDriver
URL:
jdbc:inetdae://{hostIP | hostName}:port?database=database
Ejemplo en O3Designer:
Driver:
com.inet.tds.TdsDriver
Protocolo:
inetdae
Parámetros:
//{hostIP | hostName}:port?database=database
MySQL
Clase:
com.mysql.jdbc.Driver
URL:
jdbc:mysql://{hostIP | hostName}:port/database
Default port: 3306
Ejemplo en O3Designer:
En el caso de utilizar versiones recientes de MySQL donde el autollenado de los campos no resuelve los alias definidos en las
consultas, se sugiere agregar el parámetro useOldAliasMetadataBehavior con valor verdadero como parte de la URL de
conexión.
Ejemplo:
//hostName:3306/DataBase?useOldAliasMetadataBehavior=true
Memoria
Ante incovenientes en consumo de memoria ver el siguiente How To
Essentia
Clase:
intersoft.jdbc.EssentiaDriver
URL:
jdbc:essentia://{hostIP | hostName}:port/schema
Default port: 1700
Ejemplo en O3Designer:
Driver:
intersoft.jdbc.EssentiaDriver
Protocolo:
essentia
Parámetros:
//{hostIP | hostName}:port/schema
POSTGRES
Clase:
com.postgresql.Driver
org.postgresql.Driver
URL:
jdbc:postgresql://{hostIP | hostName}:port[/database]
Default port: 5432
Ejemplo en O3Designer:
Driver:
com.postgresql.Driver
Protocolo:
postgresql
Parámetros:
//{hostIP | hostName}:port[/database]
Caso especial: PIQL (driver postgres-ideafix), el driver es el de postgres con la única diferencia que se publica puerto por defecto en el puerto
7120
Para el uso de un gran volumen de registros se recomienda pasarle dos parámetros al driver para una mayor eficiencia y performance (consulta
se consuma en un cursor): autocommit=FALSE y un FetchSize mayor a 0. A partir de la versión de 5.0.040 se pueden indicar estos valores en
la configuración avanzada de los parámetros de la conexión.
DB2 as400
Clase:
com.ibm.as400.access.AS400JDBCDriver
URL:
jdbc:as400://{hostIP | hostName}/libreria
Ejemplo en O3Designer:
Driver:
com.ibm.as400.access.AS400JDBCDriver
Protocolo:
as400
Parámetros:
//{hostIP | hostName}/libreria
DB2 UDB
Clase:
com.ibm.db2.jcc.DB2Driver
URL:
jdbc:db2://{hostIP|hostName}:port/database
Default port: 50000
Ejemplo en O3Designer:
Driver:
com.ibm.db2.jcc.DB2Driver
Protocolo:
db2
Parámetros:
//{hostIP|hostName}:port/database
RELATIVITY
Clase:
relativity.jdbc.Driver
URL:
jdbc:relativity://{hostIP | hostName}:1583/ODBC
Ejemplo en O3Designer:
NOTA IMPORTANTE:
Agregarle a builder.bat y designer.bat la siguiente linea:
set PROPERTIES=%PROPERTIES% -Do3.sql.useSystemProp=false
Si se va a correr los que estan en <o3>/bin ... agregarle la siguiente linea tanto a Designer.lax como a Builder.lax:
o3.sql.useSystemProp=false
En GNU/Linux, UNIX, AIX (entre otros) a los builder.sh, designer.sh :
PROPERTIES="$PROPERTIES -Do3.sql.useSystemProp=false"
Service Pack para Relativity 11.00
FIREBIRD
Clase:
org.firebirdsql.jdbc.FBDriver
URL:
jdbc:firebirdsql://{hostIP|hostName}:port/path_to_database
Default port: 3050
Ejemplo en O3Designer:
Driver:
org.firebirdsql.jdbc.FBDriver
Protocolo:
firebirdsql
Parámetros:
//{hostIP|hostName}:port/path_to_database
Accediendo archivos DBF y EXCEL
Ver notas en sección HowTo Accediendo archivos DBF y Excel
HowTo Crear Conexiones a MySQL sin que cargue todos los datos a memoria
Al ejecutar una consulta con el driver jdbc de MySQL el comportamiento normal es que devuelve la información luego de terminada la consulta a
la BD.
En el caso de extraer una gran cantidad de información se podrá llegar al límite de la memoria virtual asignada al proceso y devolvernos un Java
Heap Memory.
La solución a este inconveniente es solicitarle al driver que no cargue los datos en memoria y lo devuelva.
Esta solución está en devolvernos los datos de a uno (row by row) y aplicable para la versión de O3 BI 5.4.022
Procedimiento
Se debe copiar el _o3p-HD-4582.jar a la carpeta classes de la instalación.
Adicionalmente se debe activar la property o3.jdbc.mysql.rowbyrow=true en el archivo O3Builder.properties u O3Designer.properties,
segun corresponda.
Notificación
Se debe visualizar el siguiente mensaje en el log del componente actuante
MySQL Statement created to read row-by-row
Referencias: http://dev.mysql.com/doc/refman/5.0/en/connector-j-reference-implementation-notes.html
Service Pack para Relativity v 11.00
Ante el reporte de un error en el comportamiento del Data Server de Relativity 11.00, utilizando tanto el driver JDBC como ODBC, en donde no
se podian acceder a algunas de las tablas de una consulta SQL, Liant presenta un Service Pack y la forma de obtenerlo.
Se transcribe lo recibido del Proveedor.
Below are instructions for downloading and installing the Relativity v11.00 service pack:
1) ftp ftp.liant.com
2) Login with anonymous, using your email address as the password.
3) cd pub/rel/outgoing
4) binary
5) get reldbsrv1100SP1LNX.zip
6) bye
7) Unzip reldbsrv1100SP1LNX.zip. The password is 'Aug21'. Extract the contained file reldbsrv1100SP1LNX.tar.
8) Binary ftp reldbsrv1100SP1LNX.tar to the RelRM11.00 directory on the machine running the Data Server.
9) Login as root to the machine running the Data Server.
10) Change directory to the RelRM11.00 directory.
11) mkdir save
12) mv reldbsrv save
13) mv reldbsrv.rm save
14) mv relfm_rm.o save
15) mv srvstrrm.o save
16) tar xvf reldbsrv1100SP1LNX.tar
17) ln reldbsrv.rm reldbsrv
18) ./STOP
19) If the Data Server is configured to automatically restart, then the STOP command should report that it has restarted. If the Data Server is not
configured to automatically restart, restart it with the command ./RUN.
The patched Data Server should now be running.
HowTo Accediendo a datos de Lotus Notes
Accediendo a datos de Lotus Notes
Con tal propósito existe un driver ODBC llamado NotesSQL que permite extraer información de Notes y Domino.
Este driver permite que aplicaciones que soportan el protocolo ODBC (como es el caso de O3) puedan leer y actualizar la información
almacenada en bases de datos de Domino (archivos .nsf)
Más información sobre este driver, así como instrucciones de cómo bajarlo se pueden encontrar en la siguiente dirección:
http://www-142.ibm.com/software/sw-lotus/products/product4.nsf/wdocs/notessqlhome
HowTo Accediendo archivos DBF y Excel
Como forma alternativa al uso de JDBC-ODBC Bridge, se provee un driver JDBC propio que permite el acceso a datos de hojas de cálculo Excel
y archivos DBase. El mismo se encuentra en la librería idrivers-<version>.jar que se distribuye con el producto (su ubicación es
<O3_DIR>/classes/jdbc
Estos drivers JDBC tienen limitaciones importantes:
se permiten sólo consultas a la base de datos.
no se permite realizar proyecciones en las consultas (lista de campos en el select)
no se puede filtrar datos en la consulta (los select no permiten where).
en el caso de dbase, solo se reconocen algunos tipos de datos: C (character), D (Date), N (Numeric) y F (Float).
Básicamente, en ambos drivers la única consulta permitida es "select * from nombre-de-tabla", y ambos reconocen "nombre-de-tabla" como una
consulta válida y equivalente a "select * from nombre-de-tabla".
DBase
Clase:
com.ideasoft.db.drivers.dbf.DBFDriver
URL:
jdbc:dbf:<path_to_directory>
donde path_to_directory es un camino absoluto a una carpeta conteniendo los archivos .dbf. Los nombres de esos archivos (sin la extension
.dbf) son usados como nombres de tablas en las consultas.
Por ejemplo, en O3Designer, hay que poner lo siguiente:
Driver:
com.ideasoft.db.drivers.dbf.DBFDriver
Protocolo:
dbf
Parámetros:
/opt/data
Si existe un archivo /opt/data/catalogo.dbf, la consulta "select * from catalogo", o simplemente "catalogo", traera todos los datos contenidos en el
archivo.
Excel
Clase:
com.ideasoft.db.drivers.xls.XLSDriver
URL:
jdbc:xls:<path_to_excel_file>[;titlesLine=x][;titlesColumn=y]
donde path_to_excel_file es un camino absoluto a el archivo excel, x es la linea de titulos e y es la columna donde comienzan los títulos. Por
omisión, se toman como valor titlesColumn=1 y titlesLine=1. Notese que la columna se indica numéricamente, si la tabla comienza en la columna
"B", debe ponerse titlesColumn=2.
El driver de Excel utiliza los nombres de las hojas como nombres de tabla de base de datos. En cada hoja busca una tabla cuya primera linea
este compuesta de strings, que tomara como los nombres de los campos. Se puede indicar en la URL cual es la tabla (en caso de haber mas de
una) con los argumentos titlesLine y titlesColumn.
Por ejemplo, en O3Designer, hay que poner lo siguiente:
Driver:
com.ideasoft.db.drivers.xls.XLSDriver
Protocolo:
xls
Parámetros:
/opt/data/datos.xls
Cómo tratar los campos de tipo fecha
Es importante notar que a pesar de que en la planilla de cálculo se haya formateado un campo para presentarlo como fecha, sigue siendo un
valor numérico, por lo que el driver devuelve a O3 un número y no una fecha.
Es necesario definir un campo virtual que transforme dicho valor numérico en una fecha. Para ello se deben seguir los siguientes pasos:
1. El campo definido en la fuente de datos correspondiente a la fecha, debe ser declarado de tipo "Integer". Sea valor_fecha dicho campo
2. Se debe definir un campo virtual, de tipo "Date", de nombre fecha_vf con la siguiente expresión:
SumarDia(Fecha(1,1,1900),valor_fecha)
3. Definir la dimensión de tipo fecha, asociando el virtual fecha_vf
En este caso, el campo debe ser leído como un entero.
Atención
La configuración del driver en O3Designer, debe realizarse como Consultas SQL.
HowTo Envio de mail con servidor SMTP que requiere TLS
Entorno: Muchas veces la cuenta de correo a utilizarse esta en un servidor externo, ej: gmail. Esto hace que la configuración por defecto del
envió de mails configurado no sirva.
Configuración para el envío de mail con TLS
Si está en una versión de O3 menor o igual a la 5.4.022 bajar el archivo _o3p-mailsmtps.jar e instalarlo en <o3>/classes.
1. Editar el archivo <o3>O3Builder.properties, agregar al final
mail.useSystemProp=true
mail.smtp.starttls.enable=true
mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
mail.smtp.port=465
mail.smtp.socketFactory.port=465
mail.debug=false
2. Configurar el Designer en el tab acciones a construir:
Servidor SMTP para enviar correo mi_cuenta:mi_clave@mi_servidor_de_correo.
Ej. para gmail: [email protected]:[email protected] notar que para este caso hay 2 @, esto se debe a que gmail el
usuario es [email protected]
How to Utilizando drivers ODBC de 32 bits en SO de 64 bits
En instalaciones de O3PS en Sistemas Operativos de 64 bits, ejecutando el O3PS con java de 64 bits, puede ocurrirnos de que tengamos que
utilizar drivers ODBC de 32 bits en la extracción de datos.
Para ello el O3Builder y/o O3Designer tendrán que correr con java 32 bits. Los drivers ODBC solo se pueden acceder con ejecutables en la
misma arquitectura.
En el caso de que querramos correr algunos módulos con java 64 bits y otros con java 32 bits, debemos:
Tener instaladas ambas máquinas virtuales.
Modificar en los archivos .lax que jvm correrá cada módulo, en la siguiente sección:
#
#
#
LAX.NL.CURRENT.VM
----------------the VM to use for the next launch
lax.nl.current.vm=..\\jre\\bin\\java.exe
Para utilizar los archivos .bat deberá crear una copia del settings.bat (por ejemplo: settings_32.bat), y modificar la linea que da valor a
JMMPATH:
@echo off
set
set
set
set
INSTALL_DIR=C:\IdeaSoft\O3
JVMPATH=%INSTALL_DIR%\jre
JAVA_HOME=%JVMPATH%
JVM=%JAVA_HOME%\bin\java.exe
Luego modificar la primer linea del archivo .bat:
@call settings.bat
IF NOT EXIST "%JVM%" GOTO NOT_FOUND
Tener activadas las licencias para ambas jvm.
Configuración ODBC en Windows de 64 bits
Observar que en plataformas Windows de 64 bits, la configuración de las fuentes de datos ODBC de 32 bits y 64 bits se invoca
con ejecutables diferentes.
La versión de 32-bit del Odbcad32.exe se ubica en la carpeta %systemdrive%\Windows\SysWoW64.
La versión de 64-bit del Odbcad32.exe se ubica en la carpeta %systemdrive%\Windows\System32. Es la que se invoca
por el panel de control.
En la mayoría de los casos, para lograr conectarnos satisfactoriamente desde O3 es necesario configurar el odbc con la
versión 32 bits (ubicada en SysWoW64) y utilizar en las componentes O3Builder y O3Desginer la jvm de 32 bits tal cual se
explica anteriormente en ésta página.
How To Utilizando drivers ODBC para archivos de texto (ASCII)
En algunas oportunidades nos encontramos ante el uso de fuentes de datos que son archivos planos de texto (ASCII), archivos *.txt *.csv, por
ejemplo.
Y que además no deseamos extraer toda la información sino parte de ella, y utilizar consultas sql.
En las instalaciones del Sistema Operativo MS-Windows viene instalado un driver ODBC para el uso de estos archivos.
Se desarrolla a continuación los pasos a seguir para la utilización de este driver ODBC.
Pasos a seguir para la utilización de un driver ODBC para archivos de texto
Administrador de orígenes de datos ODBC
A través del Panel de Control accedemos al Administrador de orígenes de datos ODBC y agregamos un nuevo origen de datos en DSN de
Sistema.
Configuración ODBC
Seleccionamos el directorio donde están los archivos de texto (fuentes de datos).
Abrimos las opciones presionando el botón OPCIONES y luego el botón DEFINIR FORMATO; donde indicaremos un archivo de texto que nos
informe del formato, para una correcta extracción de los datos.
Tenga presente el número de filas a explorar (numero de campos) y el tipo de formato del archivo (delimitado por comas, por tabuladores,
personalizado, etc).
Luego de indicar lo necesario para que lea correctamente el archivo, presionamos el botón ESTIMAR, y se completará la ventana de la derecha.
Si en la primer línea del archivo de texto están los nombres de los campos y así lo indicáramos en la casilla de activación correspondiente, los
ingresaría; en caso contrario las nombra con los nombres de F1 a F_n_ (siendo n el número de campos encontrado).
Damos aceptar hasta cerrar.
Verificación y/o modificación del archivo Schema.ini
En el directorio indicado se crea un archivo Schema.ini, donde está la información del contenido del archivo de texto a extraer información.
Además de lo indicado en el punto anterior sobre el nombre de los campos, en algunas oportunidades el ESTIMADOR del driver no toma la
información que deseamos, por lo que recomendamos editar el archivo, verificarlo y si así lo necesita modificarlo.
En nuestro caso de ejemplo además de verificar si adoptó el tipo de dato que corresponde, debemos modificar los nombres de los campos F1 a
Fn por el verdadero; y salvamos el archivo.
Extracción por consulta sql
Finalizado los pasos anteriores podemos aplicar la extracción de datos con una consulta sql, indicando los campos que necesitamos, con filtros
(where) y condiciones.
Usando la función debug() para ver expresiones calculadas
¿Dónde podemos usar la función?
En el designer al crear campos virtuales podemos usar la función debug(String)
En el builder, nos muestra que valores toma un expresión en el momento de la construcción
En el browser cuando creamos expresiones, por ejemplo para hacer algún cálculo en una columna
¿Cuando usar la función debug()?
Un problema común en el uso de campos virtuales es que la expresión aparenta no hacer correctamente el cálculo. Determinar cual es el
problema implica saber cuales son los valores utilizados por la expresión al ser evaluada por O3. La función debug() sirve para este fin.
La función debug(String) muestra en el log el valor del texto, campo o variable que se le pase como parámetro. Esto permite ver en el log
generado por la aplicación el valor que tiene un elemento usado en una expresión al momento de ser evaluada la misma.
Ejemplo:
Suponiendo que la siguiente expresión determina el valor de un campo virtual de tipo String:
cantidad < 1000 ? "MENOR_MIL" : "SUPERIOR"
Esta expresión retorna el valor "MENOR_MIL" si el campo "cantidad" es menor a 1000 y sino retorna "SUPERIOR"
Para analizar que es lo que trae el campo de entrada "cantidad", se la puede puede redefinir de la siguiente manera:
debug("--> " + cantidad);
cantidad < 1000 ? "Menor" : "Mayor"
En el log aparecería el siguiente texto:
....
Debug: --> 25
Debug: --> 23
....
Suponiendo que en vez de ser el campo de entrada un double es un String, sería conveniente ponerlo de la siguiente manera para analizar si el
valor trae espacios en blanco.
debug("[" + nombre + "]");
NOTA : Actualmente esta función no figura en la ayuda del editor de expresiones.
NOTA : El log generado por defecto se encuentra en la carpeta (Instalación de O3)/logs en los archivos Designer.log, Builder.log y
Browser.log para Designer, Builder y Browser respectivamente.
Activar la función debug()
El uso de esta funcíon necesita que se encienda una property en los archivos .properties que se encuentran el directorio donde se instaló O3
Para ello según donde sea necesario inspeccionar (browser,designer o builder) deberemos crear un archivo O3Browser_user.properties,
O3Desginer_user.properties, o O3Builer.properties
Colocar en dicho archivo
debug = true
salvarlo.
al volver a correr el browser, designer o builder en los archivo log o en la consola si se corrió con -debug, se verán los valores que toma la
expresión de la cual se quiere saber su contenido.
How To O3 Builder
Ayudas y explicaciones de cómo realizar operaciones con el componente O3Builder.
Cambio de directorio temporal - Builder
How To Generar log de la construcción del cubo
HowTo pasar parámetros al builder
HowTo pasar una password encriptada como parámetro a builder
Cambio de directorio temporal - Builder
Problema
Es común en las instalciones donde se particiona el disco destinar una para tmp.
Durante la genereción del los cubos se emplea dicho directorio en forma temporal, en casos que esta espacio este muy lleno no será posible la
construcción.
Solución
Editar el archivo builder.sh
buscar:
PROPERTIES="$PROPERTIES -mx1024M"
y agregar
PROPERTIES="$PROPERTIES -mx1024M"
PROPERTIES="$PROPERTIES -Djava.io.tmpdir=/tmpX"
dondo tmpX es cualquier directorio que queramos
How To Generar log de la construcción del cubo
Contexto
La idea es generar logs del proceso de construcción que nos permitan en caso de que ocurra algún problema identificar sus posibles causas.
Procedimiento
El ejecutable para O3Builder se encuentra en la carpeta bin de la instalación de O3, y en script en la carpeta bat (instalación MS-Windows) o sh
(instalación Linux).
Al ejecutar O3Builder utilizamos la siguiente sintaxis (recordar que O3Builder puede ejecutarse con archivos .mdl, .cube o .srv):
builder.sh
./builder.sh -debug -logfile=/<DIR donde se guardara el log>/mi_cubo.log <DIR archivo srv/archivo.srv>
./builder.sh -debug -logfile=/<DIR donde se guardara el log>/mi_cubo.log <DIR archivo mdl/archivo.mdl>
./builder.sh -debug -logfile=/<DIR donde se guardara el log>/mi_cubo.log <DIR archivo
cube/archivo.cube>
builder .bat
builder.bat -debug -logfile=\<DIR donde se guardara el log>\mi_cubo.log <DIR archivo srv\archivo.srv>
builder.bat -debug -logfile=\<DIR donde se guardara el log>\mi_cubo.log <DIR archivo mdl\archivo.mdl>
builder.bat -debug -logfile=\<DIR donde se guardara el log>\mi_cubo.log <DIR archivo
cube\archivo.cube>
Builder .exe
Builder.exe -debug -logfile=\<DIR donde se guardara el log>\mi_cubo.log <DIR archivo srv\archivo.srv>
Builder.exe -debug -logfile=\<DIR donde se guardara el log>\mi_cubo.log <DIR archivo mdl\archivo.mdl>
Builder.exe -debug -logfile=\<DIR donde se guardara el log>\mi_cubo.log <DIR archivo
cube\archivo.cube>
.
HowTo pasar parámetros al builder
Consideraciones previas
Es usual querer parametrizar el modelo de modo que al momento de su construcción se pueda cambiar algún valor sin tener que hacer
cambios en el mismo,Sobre todo si la construción se hace desde el buider
Procedimiento
en la pantalla se ve que agregamos un parametro para su posterior uso
al parametro File_param_1 le dimos el valor "valor_1" pero le podrian haber dado otro nombre y otro valores (cambiar el tipo al que corresponda)
luego creamos un archivo con cualquier editr de texto y le agregamos
File_param_1=nuevo_valor
Guardamos el archivo con el nombre que deseamos: param.cfg
NOTA: el archivo debe de tener la terminación .cfg
Ahora al construir desde al builder pasamos la siguiente línea de comado
./builder.sh /<DIR_cubos>/mi_cubo.cube -is=mi_imputset -cfg=param.cfg
o para el builder .bat
builder.bat \<DIR_cubos>\mi_cubo.cube -is=mi_imputset -cfg=param.cfg
Listo ahora cuando quiéramos cambiar el parámetro solo tocamos el valor del archivo
HowTo pasar una password encriptada como parámetro a builder
INPORTANTE:
Esta funcionalidad solo esta disponible para el campo password de la conexion a la base de datos.
Se debe de construir el cubo con el builder pasandole -cfg=nombre_archivo.cfg, donde nombre_archico contiene el listado de parámetro, en
particular nuestra password
Procedimiento:
1. En el modelo se debe definir un parametro de la forma nombre_parametro.pwd
2. Ese parametro se va a usar en el campo password de la conexion a la base de datos asi: $nombre_parametro.pwd$, esto no lo veremos
pues el campo nos pone "*********" por lo cual debemos de ser cuidadosos al escribir
3. Generar la password encriptada
en la consola ejecutamos builder -encrypted mi_password, obteniendo algo del estilo
Notice: O3Builder Complete version: 3.3.000
aadbZegrI3U=
4. Armado del nombre_archivo.cfg
con un editor de texto creamos un archivo nuevo y le agregamos
nombre_parametro.pwd = aadbZegrI3U=
5. salvamos
6. construimos el cubo desde la consola
builder -cfg=nombre_archivo.cfg cubo.mdl
How To O3 en Base de Datos
Ayudas y explicaciones de cómo realizar instalaciones de O3 con base de datos.
Exportación de RBAC
How To Cambiar data sources de O3 y Enterprise Portal
How To Migrar O3Server.cfg a Base de Datos
How To Usar una nueva Base de Datos para RBAC
Exportación de RBAC
¿Cuando hay que migrar las tabla RBAC?
Como es sabido existe una recomendación de no usar HSQL com backend para O3 en ambiente de producción. El problema del que trata este
wiki es que pasa cuando comencé a trabajar en HSQL y decidimos pasar a usar una base de datos como puede ser
Postgrsql/MySQL/MS-SQL/Oracle.
Luego de usar el wizard del Admserver y hacer que O3 trabaje contra otra base de datos, nos encontramos con la sorpresa que perdimos los
usuarios.
Talend.
Para hacer la exportación de esta tabla usaremos una herramienta opensource llamada Talend (visitar el sitio)
Procedimiento para realizar la exportación.
1. Bajar el correspondiente a la base de datos:
RBAC_Converter_PostgreSQL_1.0.zip
RBAC_Converter_MySQL_1.0.zip
RBAC_Converter_MSSQL_1.0.zip
2. Descompactar el archivo.
3. Editar el archivo DBparameters.properties acorde a nuestras necesidades.
4. Bajar el Jboss.
5. Correr el wizard del admserver para setear la base de datos a usar.
6. Correr en línea de comandos el .bat/.sh
7. Levantar el JBoss.
How To Cambiar data sources de O3 y Enterprise Portal
Uso
Este wiki aplica únicamente a instalaciones de O3 5.0 y posteriores que tienen almacenada la configuración de O3 y Enterprise
Portal en base de datos (distinta de Hypersonic) y se requiere mover dichas bases a otro servidor.
Por el contrario, si lo que se requiere es migrar instalaciones completas de O3, dirgirse a: Migración entre Versiones de O3.
Contexto
Configuración de O3 y de Enterprise Portal almacenadas en base de datos.
Si surge la necesidad de cambiar de servidor de base de datos de un equipo a otro, se deberán migrar los datos y cambiar también los data
sources de O3 para que apunten a la nueva ubicación de las bases de O3 y de Enterprise Portal.
Procedimiento
Resumen:
1. Mover las bases O3 y O3EP.
2. Detener servidor de O3.
3. Cambiar data source de O3.
4. Cambiar data source de Enterprise Portal.
5. Iniciar servidor de O3.
Se detalla el procedimiento asumiendo que la base de datos que contiene la configuración de O3 se llama O3, y la que contiene la configuración
del Enterprise Portal se llama O3EP.
1. Mover las bases O3 y O3EP (tablas, datos, etc) con el migrador que provea el propio servidor de base de datos. Mantener el nombre original
de las bases para simplificar el procedimiento.
2. Detener servidor de O3.
3. Cambiar data source de O3. En <Instalación O3>\jboss\server\default\deploy\gserver se encuentra el archivo gserver-hsql-ds.xml (este
nombre puede haber cambiado si ya se trabajaba con otra base de datos, por ejemplo gserver-sqlserver-ds.xml). Copiar el archivo y al original
agregarle un # (de forma que quede respaldado como #gserver-hsql-ds.xml).
Editar la copia con cualquier editor de texto.
Se puede utilizar como ejemplo de consulta el archivo <Instalación O3>\jboss\docs\examples\jca\mssql-ds.xml.
Los tags a modificar son:
<connection-url> Indica la url del servidor de base de datos, incluye ip o nombre del servidor, puerto de conexión habitual y nombre de la
base de datos. Ejemplo para SQL Server:
<driver-class> Clase para conexión jdbc a la base de datos. Ejemplo para SQL Server:
<user-name> Usuario para efectuar la conexión, con permisos de lectura sobre la base de datos.
<password> Contraseña del usuario.
NO se debe modificar el tag <jndi-name>.
4. Cambiar datasource de Enterprise Portal. Los pasos son similares a los de O3, pero el data source se encuentra en el directorio
<Instalación O3>\jboss\server\default\deploy, con el nombre liferay-hsqldb-ds.xml (o similar). Respaldar el archivo original agregandole # al
nombre y modificar la copia.
Se puede utilizar como ejemplo de consulta el archivo <Instalación O3>\jboss\docs\examples\jca\mssql-ds.xml.
Los tags a modificar son:
<connection-url> Ejemplo para SQL Server:
<driver-class> la misma que se utilizó para O3.
<user-name> Usuario para efectuar la conexión, con permisos de lectura sobre la base de datos.
<password> Contraseña del usuario
5. Iniciar el servidor de O3.
How To Migrar O3Server.cfg a Base de Datos
La finalidad de la migración del O3Server.cfg a base de datos es pasar toda la información que contiene (cubos publicados, vistas, etc.) a base
de datos, y seguir trabajando desde allí.
Los pasos para la migración son:
1. Creación o actualización de la base de datos.
2. Migración de los datos.
3. Configuración del O3Server para iniciarse con base de datos.
1- Actualización o creación de la Base de Datos.
No es necesario que el Servidor O3 esté levantado a no ser que se quiera usar la base Hypersonic que viene en el jboss, conectandose por
host:puerto.
Iniciar el AdmServer y en la toolBar seleccionar "Herramientas -->Generador Esquemas Base de Datos". Esto muestra la siguiente ventana:
Se configura la conexión a la base de datos:
1. Motor, las opciones posibles son SQL Server Microsoft, SQL Server Opta, Oracle, MySQL, PostgreSQL, HsqlDb, Derby, other.
2. Manejador (driver) a utilizar (debe tenerse el driver correspondiente en el servidor <InstalaciónO3>\jboss\server\default\lib)
3. Url completa a la base de datos (servidor, puerto de la base de datos, nombre de la misma, etc.). En caso de realizar la migración a una
nueva base de datos, la misma debe estar creada de antemano.
4. Usuario y contraseña (que se guardará encriptada) para la base de datos.
Además:
Config datasource
Se debe configurar <InstalaciónO3>\jboss\server\default\deploy\gserver\gserver-hsql-ds.xml, según la base de datos a la que
se quiera exportar (salvo que se vaya a utilizar Hypersonic), se debe cambiar el contenido de los siguientes tags:
<connection-url>, <driver-class>, <user-name> y <password>, y comentar <metadata>.
Configuración inicial (original):
Ejemplo para conexión a SQL Server:
En este caso la configuración del archivo corresponde a indicar la URL, el driver, usuario, contraseña y comentar el tag indicado.
Se deberá comentar la property hibernate.dialect = org.hibernate.dialect.HSQLDialect de
<InstalaciónO3>\jboss\server\default\ideasoft-o3\GServer.properties si no se va a trabajar con Hypersonic, dejando
hibernate.dialect = org.hibernate.dialect.SQLServerDialect si se va a utilizar SQL Server, por ejemplo.
Luego se tiene 3 opciones:
1- Verificar la conexión a la base con el botón "Verificar Conexion". Si la conexión es satisfactoria se mostrará un mensaje como el siguiente:
2- En caso de que se quiera crear las tablas, se debe de presionar el botón con la etiqueta "Generar Tablas". Se mostrará el siguiente mensaje:
3- Si las tablas ya existen y lo que se quiere es actualizar la estructura de las mismas, se debe de presionar el botón con la etiqueta "Actualizar
Tablas".
Se crearán/actualizarán las tablas de RBAC, E2, jwf, y las necesarias para cubos, vistas, cubos-roles, cubos-perfiles, modelos, etc.
2- Migración de los datos.
Luego de una actualización exitosa de la base de datos, se debe de proceder a migrar los datos del O3Server.cfg (cubos, vistas, etc.) a la base
de datos.
Para migrar los datos se debe:
1. Iniciar el O3 server y conectarse usando el AdmServer
2. Luego desde el AdmServer, seleccionar en la toolBar la opción "Herramientas --> Migrador de configuración del Servidor". Para realizar
la migración se debe presionar el botón con la etiqueta "Migrar" y a continuación se mostrará en el área de "Mensajes de la migración" la
información de qué se migró:
3. La última linea del mensaje está avisando que ya están disponibles los cubos como para comenzar a trabajar desde base de datos.
3- Configuración del O3 Server para levantar con Base de Datos.
Luego de haber seguido los pasos anteriores se debe de bajar el servidor y editar el archivo GServer.properties para modificar la property
o3.config.dataBase de <InstalaciónO3>\jboss\server\default\ideasoft-o3\GServer.properties, con el valor "true".
Al levantar el servidor nuevamente este tomará la información que se guardó en la base de datos y toda nueva información sera guardada en
este lugar.
Como los usuarios admin y user están en RBAC, se deben crear manualmente en el AdmServer una vez que se migró a base
de datos.
Volver a trabajar con O3Server.cfg
Como ya se mencionó a partir de O3 5.0 se almancena la configuración del servidor en base de datos, a diferencia de versiones anteriores
donde la configuración era almacenada en el archivo O3Server.cfg
Para facilitar la migración desde versiones anteriores se ofrece este mecanismo que tiene por resultado eliminar el uso del O3Server.cfg y pasar
a adminsitrar en base de datos la información de cubos publicados y perfiles de acceso.
De todas formas se aclara que si se necesita volver a la situación inicial, trabajando con O3Server.cfg, el procedimiento sería:
1. Apagar la property (o3.config.dataBase = false) que se define en el archivo Gserver.properties ubicado en
<O3_DIR>\jboss\server\default\ideasoft-o3
2. Reiniciar el O3Server (Jboss).
Los cambios hechos desde la migración (publicación de nuevos cubos, creación de nuevas vistas, etc.), no se verán reflejados en el
O3Server.cfg.
How To Usar una nueva Base de Datos para RBAC
A continuación se detallan los pasos para usar RBAC sobre un motor de base de datos diferente a Hypersonic.
Los pasos indicados con el símbolo
deben ejecutarse cada vez que se actualiza la versión del servidor ya que la actualización retorna las
configuraciones descriptas en estos puntos a su estado por defecto
Creación de la Base de Datos para RBAC (Ejemplo con Oracle)
1. Copiar el driver JDBC que se desea utilizar en las siguientes carpetas
<O3>/classes/jdbc
<O3>/jboss/server/default/lib
2. Iniciar el JBoss
3. Iniciar el AdmServer
4. En el editor de configuración del Servidor, indicar los datos correspondientes para la base de datos que se desea utilizar. Por ejemplo:
Motor
Oracle
Driver
oracle.jdbc.driver.OracleDriver
URL
jdbc:oracle:thin:@orion.ideasoft:1521:ORION
Usuario y password
Una cuenta válida
Si desea configurar una base diferente, consulte: Configuración de drivers jdbc
5. Presionar el botón de creación de la base de datos (Generar Tablas)
6. Cerrar el AdmServer
Actualizar el Data Source de JBoss para tomar el nuevo repositorio de usuarios
1.
2.
3.
4.
5.
Bajar el JBoss
Renombrar el archivo <O3>jboss\server\default\deploy\gserver\gserver-hsql-ds.xml de modo que se llame #gserver-hsql-ds.xml
Copiar el archivo <O3>jboss\server\default\deploy\gserver#gserver-oracle-ds.xml de modo que se llame gserver-oracle-rbac-ds.xml
Editar este último archivo renombrado (gserver-oracle-ancel-ds.xml)
Modificar el contenido del tag <connection-url> con el siguiente contenido:
<connection-url>jdbc:oracle:thin:@orion.ideasoft:1521:ORION</connection-url>
6. Modificar el contenido de los tags <user-name> y <password> con una cuenta válida
Ingreso de los usuarios mínimos para el funcionamiento
1.
2.
3.
4.
Iniciar el JBoss
Iniciar el AdmServer
Ingresar con el usuario system de password system
Dar de alta los siguientes usuarios
user, con password user
admin, con password admin
5. Al usuario admin agregarle los siguientes atributos
isAdmin con valor booleano en TRUE
runAsEnabled con valor booleano en TRUE
6. Dar de alta los siguientes roles
User al que debe pertenecer el usuario user
Manager al que debe pertenecer el usuario admin
7. Cerrar el AdmServer

Documentos relacionados