Informes con parámetros
Cuando ejecuta un informe desde OpenKM, puede mostrarse un formulario que requiere 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 el UsersLogin.zip).
Fichero Params XML
Sección titulada «Fichero Params XML»En el ejemplo, se han establecido dos campos de filtrado:
| Field | Type | Description |
|---|---|---|
| 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>Uso de campos en el informe
Sección titulada «Uso de campos en el informe»Se crean dos parámetros en el informe:
| Parameter | Class | Description |
|---|---|---|
| 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 en Java
Sección titulada «Ejemplo en 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 se pueden usar 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 en SQL
Sección titulada «Ejemplo en 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},'%')