Informes con parámetros
Al ejecutar un informe desde OpenKM, puede mostrarse un formulario que requiera que el usuario introduzca valores con fines de filtrado. El caso más común es filtrar por un rango de fechas.
Entendiendo el filtrado
Sección titulada «Entendiendo el filtrado»Para entender el filtro de formulario, usaremos el informe UsersLogin.rep (descargue UsersLogin.zip).
Fichero XML de parámetros
Sección titulada «Fichero XML de parámetros»En el ejemplo, se han establecido dos campos de filtrado:
| Campo | Tipo | Descripción |
|---|---|---|
| from_date | Input | Campo usado para filtrar la fecha de inicio. |
| to_date | Input | Campo usado para filtrar la fecha de fin. |
El fichero params.xml:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE report-parameters PUBLIC "-//OpenKM//DTD Report Parameters 2.1//EN" "http://www.openkm.com/dtd/report-parameters-2.1.dtd"><report-parameters> <input label="From" name="from_date" type="date"> <validator type="req"/> </input> <input label="To" name="to_date" type="date"> <validator type="req"/> </input></report-parameters>Usar los campos en el informe
Sección titulada «Usar los campos en el informe»En el informe se crean dos parámetros:
| Parámetro | Clase | Descripción |
|---|---|---|
| from_date | java.util.Date | Fecha de inicio. |
| to_date | java.util.Date | Fecha de fin. |

Los parámetros también se usan en informes SQL o Java.
Ejemplo Java
Sección titulada «Ejemplo Java»- Haga clic en el botón de consulta del informe
.

Las variables from_date y to_date se inyectan en la ejecución del código y pueden usarse directamente, como en el ejemplo siguiente.
import org.springframework.web.context.WebApplicationContext;import com.openkm.db.service.ActivitySrv;import com.openkm.db.bean.*;import com.openkm.util.*;import java.util.*;
WebApplicationContext cc = (WebApplicationContext) ContextWrapper.getContext();ActivitySrv activitySrv = cc.getBean(ActivitySrv.class);ActivityFilter filter = new ActivityFilter();Calendar begin = Calendar.getInstance();begin.setTime(from_date);begin.set(Calendar.HOUR, 0);begin.set(Calendar.MINUTE, 0);begin.set(Calendar.SECOND, 0);begin.set(Calendar.MILLISECOND, 0);filter.setBegin(begin);Calendar end = Calendar.getInstance();end.setTime(to_date);end.set(Calendar.HOUR, 0);end.set(Calendar.MINUTE, 0);end.set(Calendar.SECOND, 0);end.set(Calendar.MILLISECOND, 0);filter.setEnd(end);filter.setAction("LOGIN");List al = new ArrayList();for (Iterator it = activitySrv.findByFilter(filter).iterator(); it.hasNext();) { Activity act = (Activity) it.next(); Map actMap = new HashMap(); actMap.put("user", act.getUser()); actMap.put("date", act.getDate().getTime()); al.add(actMap);}
return al;Ejemplo SQL
Sección titulada «Ejemplo SQL»Haga clic en el botón de consulta del informe
.

En el ejemplo, hay un parámetro llamado “name” de clase “java.lang.String” usado para filtrar la lista de usuarios.
select * from OKM_USER where USR_ID like concat('%',$P{name},'%')