Ayuda sobre productos BOLD:
Personalización
ATENCIÓN: El siguiente contenido es de uso avanzado y su utilización puede ocasionar daños irreparables en la configuración del sistema
A continuación se describen las diferentes opciones disponibles en una implantación de BOLD para personalizar algunos aspectos de la aplicación, tanto del módulo servidor como del módulo cliente. Estas personalizaciones inciden sobre dos aspectos principales:
Actualización de la configuración o personalización
Una vez modificados los archivos de configuración es necesario aplicar los nuevos parámetros sobre el servidor que se encuentra en marcha. Esto se puede hacer de dos formas:
- Menú Administración –> Actualizar configuración del servidor
- CTRL + SHIFT + clic:
- En el cliente Windows: sobre el botón de «Parámetros de la aplicación» (sobre el botón de «Parámetros de la aplicación»
- En el cliente web: sobre el nombre del plan
Nota: En un entorno cluster con múltiples instancias de servidor, si queremos que se actualicen todas las instancias de forma simultánea con la nueva configuración habrá que acceder al programa PlannerConfig.exe, opción BOLD Cluster, Recargar QCustom
Personalizaciones de la interfaz de usuario
Afectan a la apariencia de la interfaz de usuario o usuaria que se le presenta a la persona usuaria
Personalización de maestros
Existe la posibilidad de redefinir el acceso a los maestros a través de diferentes opciones de menú. Por ejemplo para acceder por separado al listado de ciclos de 7 días y a los de 14, podemos hacerlo definiendo dos Queries en el fichero de configuración, con la siguiente cabecera:
<Query Name="QueryHorarios7D" ShowName="Horarios estándard ciclos 7d" Type="SequenceScheduleList" ID="27001" Description="Horarios estándard (ciclos 7d)">
<Query Name="QueryHorarios14D" ShowName="Horarios estándard ciclos 14d" Type="SequenceScheduleList" ID="27002" Description="Horarios estándard (ciclos 14d)">
Para redefinir un maestro, se debe de seguir la estructura anterior, sustituyendo el atributo Type por el correspondiente al nombre de la clase + el sufijo «List».
Personalización de informes y reports
Para personalizar un informes para personalizar sus columnas mediante nuevas fórmulas o expresiones debemos conocer primero la clase del informe a personalizar. Los pasos son los siguientes
- En la versión Fullweb:
- Para obtener el nombre de la clase: situar el cursor sobre el título del informe
- Para obtener el nombre de las columnas internas: situar el cursor sobre el título de una columna
- En la versión Windows:
- Sobre el título del informe pulsar: CTRL+SHIFT+Botón izquierdo
- Aparece un diálogo con el nombre de la clase
- Pulsar CTRL+C (Copiar)
A continuación, ir al editor de personalización (QueryCustom.xml) y localizar la clase en cuestión. Si no existe, crearla o copiar una plantilla del fichero maestro (query.xml)
Otra opción más avanzada consiste en crear una nueva definición completa de informe desde el Maestro de informes de tabla dinámica.
Modificar las fechas propuestas por defecto al pedir el informe (versión Fullweb: StartDate y EndDate)
En la sección Sección ClientFunctions.
Situar el cursor sobre el título del informe para obtener su identificador. Es necesario definir dos expresiones que retornen un string en formato de fecha ISO string. Por ejemplo para el informe de Asignación de horarios día son estas dos:
<ClientFunction Name="EnumReportWorkerDay_StartDate"> <![CDATA[ IfElse( @idCase==2, ISODateAsString(EncodeDate(1968,5,27)), ISODateAsString(EncodeDate(2015,7,25)) ) ]]> </ClientFunction> <ClientFunction Name="EnumReportWorkerDay_EndDate"> <![CDATA[ IfElse( @idCase==2, ISODateAsString(EncodeDate(2020,5,27)), ISODateAsString(EncodeDate(2015,7,25)) ) ]]> </ClientFunction>
Las fechas propuestas con la expresión anterior serían: Del 27/5/68 al 27/5/2020 si el ID del plan fuera 2. Notar que el contexto de evaluación de estas funciones dispone de los siguientes parámetros:
- @idCase: identificar el case al que se va a pedir el report
- @From: fecha de inicio que se pondría por defecto si no existiera la función
- @To: fecha de fin que se pondría por defecto si no existiera la función
Nota de implementación: internamente, la versión web lo que hace es llamar a la función interna de servidor DatesForReport que le retorna el resultado de la evaluación de las dos expresiones anteriores, si existen.
Añadir nuevas columnas a los informes y reports
Añadir nuevas columnas a los informes y reports estándar
Para añadir nuevas columnas se ha de localizar la clase de informe en el fichero de configuración (ej.: querycustom.xml) y añadir o modificar el nodo ExtAttribute correspondiente. El nodo ExtAttribute es la presentación XML de la configuración de una columna de un informe. A continuación se muestra un ejemplo:
<ExtAttribute Name="Fin" ShowName="Fin" Description="Fin" Type="dateTime" Default="" Visible="false"> <Expression> <![CDATA[ IfElse (IdAdminCW.ContractEnd < DateOf(EndOfTheMonth(StartDate)), IdAdminCW.ContractEnd, DateOf(EndOfTheMonth(StartDate))) ]]> </Expression> </ExtAttribute>
Añadir nuevas columnas a los informes SQL
Para añadir nuevas columnas a los informes SQL se utilizan los atributos extendidos. Para añadir un atributo extendido se debe editar el fichero de personalización (QueryCustom.xml). En la sección de queries SQL predefinidas, a continuación de los Metadata, se añadirá la sección de atributos extendidos. Por ejemplo, tendremos:
<Metadata> <Field Name="PrimerOperando" ShowName="Primer operando" Description="Primer operando"/> <Field Name="SegundoOperando" ShowName="Segundo operando" Description="Segundo operando"/> <Field Name="Link" ShowName="CECO relacionado" ClassName="WPDemand" Link="NomCECO"/>
... </Metadata> <ExtAttributes> <ExtAttribute Name="Operando1" ShowName="Operando 1" Description="Operando 1" Type="int" Definition="PrimerOperando" /> <ExtAttribute Name="Operando2" ShowName="Operando 2" Description="Operando 2" Type="int" Definition="SegundoOperando" /> <ExtAttribute Name="Suma" ShowName="Suma" Description="Suma" Type="int" Definition="Operando1 + Operando2" /> </ExtAttributes>
Con esta configuración nos aparecerán tres columnas nuevas en el informe: Operando1, Operando2 y Suma.
Adicionalmente, se ha definido que el campo de la select denominado Link será el identificador de un objeto de tipo WPDemand y aparecerá como un hiperlink cuando se muestre en pantalla la query. Además el nombre que aparecerá será el que indique el campo NomCECO (que también debe aparecer en la select de la consulta).
Hay que tener en cuenta que cuando se tipifica un campo como Link, la consulta debe retornar dos campos, el ID y la etiqueta (NAME) asociado al hiperlink. El campo ID dejará de estar disponible dentro de las expresiones y, si es necesario deberá definirse por duplicado.
Para reducir el nº de columnas a documentar cuando la consulta extrae campos de las tablas maestras más habituales, es posible indicar de forma genérica que la consulta retorna campos de una tabla que está relacionada con una clase del sistema. Para ello se utiliza el nodo . En el ejemplo anterior WP_CONTRACTWORKER_TB y WORKER_TB. Ver también Consultas preprogramadas
Administración de personas usuarias y permisos
Modificando el grupo al que pertenece una determinado persona usuaria o definiendo permisos especiales modificaremos el aspecto y acciones disponibles para cada una de las usuarias del sistema.
Consultar los artículos en Administración de usuarios y permisos para más información.
Configuración de acciones disponibles desde el cliente
En el archivo de configuración (QueryCustom.xml) existe una sección llamada TBoldActionConfigList que permite configurar las opciones disponibles desde el cliente WorkPlanner para cada perfil de usuaria o usuario, o incluso para cada persona usuaria definida en el sistema. En la página Configuración de acciones disponibles se puede obtener información detallada de funcionamiento.
4 Personalización del modelo de datos utilizado por la aplicación
Los cambios de este tipo pueden afectar también indirectamente en cómo se le presenta la información a la persona usuaria (por ejemplo: si se añade un nuevo atributo a una entidad del sistema éste puede aparecer en los editores de objetos asociados).
Ver Ampliación del modelo de datos (DynamicClass)
Scripting
Algunos aspectos de la personalización se implementan utilizando un lenguaje de programación basado en expresiones, también conocido como scripting.
Herramientas de desarrollo
En las fases de personalización existen una serie de herramientas que pueden resultar útiles para analizar el comportamiento del sistema. Entre ellas tenemos:
- SOAP Debugger Esta herramienta permite analizar la traza de llamadas remotas cliente/servidor BOLD y se activa añadiendo las siguientes líneas al fichero de configuración WPClientcfg.ini:
[Config] SOAPDebugger=1
En el caso de la aplicación web, bastará con activar las herramientas de desarrollo (F12 en Chrome) y mirar la traza de red.