Workflow Suggestbox field

This is an implementation of the typical AJAX suggest box component:

AttributeDescriptionRequired
label

The text is shown as a label in the user interface.

true

name

Unique field identifier.

Two fields can't have the same name in the exact task definition. The name must be unique.

true

value

Can specify a default value for this component.

false

width

The width of the HTML element.

In the case of KCenter, UI must use width values based on %, for example:

  • width="50%" will work
  • width="100px" will be ignored in the KCenter UI.
false

description

General description.

false

filterQuery

A Hibernate query to filter the data. Use {0} to place the user input. *

valueQuery

A Hibernate query to obtain the value of an identifier. Use {0} to place the identifier. *

className

A class is used to get the selected options. *

filterMinLen

The minimum chars in input to begin to filter results. true
dialogTitle

The title of the HTML dialog.

true
data

When present, it is an identifier used to load data.

false

readonly

The set field cannot be modified in the user interface. By default, the value is "false". false

Child elements:

* There're three options to get suggested box values (using one of them is mandatory ):

  • filterQuery + valueQuery
  • className

No other combination of them is allowed.

Based on filterQuery and valueQuery (without table attribute)

Now filterQuery and valueQuery could be regular SQL queries. 

You should only use {0} as the parameter the user enters to filter the values from the table. 

Create COUNTRY table:

create table COUNTRY (
  CT_ID varchar(2),
  CT_NAME varchar(32),
  primary key(CT_ID)
);

insert into COUNTRY (CT_ID, CT_NAME) values ('es', 'Spain');
insert into COUNTRY (CT_ID, CT_NAME) values ('pt', 'Portugal');
insert into COUNTRY (CT_ID, CT_NAME) values ('it', 'Italy');

Metadata definition:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE property-groups PUBLIC "-//OpenKM//DTD Property Groups 3.5//EN"
                                 "http://www.openkm.com/dtd/property-groups-3.5.dtd">
<property-groups>
  <property-group label="Consulting" name="okg:consulting">
	 <suggestbox label="country" name="okp:consulting.suggestbox"
 	 	 width="200px" dialogTitle="Choose country" filterMinLen="3"
	 	 filterQuery="select ct_id, ct_name from country where ct_name like '%{0}%' order by ct_name" 
	 	 valueQuery="select ct_id, ct_name from country where ct_id='{0}'" />
  </property-group>
</property-groups>

Based on className

To help get a list from external applications or other purposes, your class can be built to retrieve the option values from those systems.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE property-groups PUBLIC "-//OpenKM//DTD Property Groups 3.5//EN"
                                 "http://www.openkm.com/dtd/property-groups-3.5.dtd">
<property-groups>
  <property-group label="Consulting" name="okg:consulting">
	 <suggestbox label="country" name="okp:consulting.suggestbox"
 	 	 width="200px" dialogTitle="Choose country" filterMinLen="3"
	 	 className="com.openkm.plugin.form.values.SuggestBoxUserList" />
  </property-group>
</property-groups>

For more information, read Creating your own Suggestbox plugin