Workflow Select field
Attribute | Description | Required |
---|---|---|
label |
The text shown as label in user interface. |
true |
name |
Unique field identifier. Two fields can't have the same name in the same task definion. Name must be unique. |
true |
type |
Type value. Allowed types:
|
true |
table |
Metadata table name. Application can store values into metadata table, that can be used in this query. |
* |
width |
The width of the HTML element. | false |
height |
The height of the HTML element. | false |
optionsQuery |
A metadata query or SQL query used to get the select options. | * |
data |
When present, is an identifier used to load data. | false |
optionsData |
When present, is an identifier used to load options. |
false |
readonly | Set field will not be able to be modified in user interface. By default the value is "false". | false |
Child elements:
|
||
* There're two options to get option values:
One of these options must be defined, otherwise you will get an error. A combination of several of these cannot be done, only one can be choosen. |
Basic select example
- Type is equal to simple.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE workflow-forms PUBLIC "-//OpenKM//DTD Workflow Forms 2.4//EN"
"http://www.openkm.com/dtd/workflow-forms-2.4.dtd">
<workflow-forms>
<workflow-form task="select test">
<select label="select label" name="select" type="simple">
<option label="one" value="001" />
<option label="two" value="002" />
<option label="three" value="003" />
</select>
</workflow-form>
</workflow-forms>
Allow multiple choice
- Type is equal to multiple.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE workflow-forms PUBLIC "-//OpenKM//DTD Workflow Forms 2.4//EN"
"http://www.openkm.com/dtd/workflow-forms-2.4.dtd">
<workflow-forms>
<workflow-form task="select test">
<select label="select label" name="select" type="multiple">
<option label="one" value="001" />
<option label="two" value="002" />
<option label="three" value="003" />
</select>
</workflow-form>
</workflow-forms>
Options based on metadata table
- Application use two tables named OKM_DB_METADATA_TYPE AND OKM_DB_METADATA_VALUE that helps storing used options values. That's very useful when you have a large number of values.
- In the table OKM_DB_METADATA_TYPE are stored metadata table definition ( table name, column name and column type ).
- In the table OKM_DB_METADATA_VALUE are stored record values.
Create metadata table definition.
The table will be called country, with two columns, country_id and country_name.
The country_id column is integer type and country_name is text type.
The country_id is set as column 0 with col00 value.
The country_name is set as column 1 with col01 value.
- Go to Administration > Database query.
- At the right bottom select JDBC from list.
- Paste the SQL in the box
DELETE FROM OKM_DB_METADATA_TYPE WHERE DMT_TABLE='country';
INSERT INTO OKM_DB_METADATA_TYPE (DMT_TABLE, DMT_REAL_COLUMN, DMT_TYPE, DMT_VIRTUAL_COLUMN) VALUES ('country', 'col00', 'integer', 'country_id');
INSERT INTO OKM_DB_METADATA_TYPE (DMT_TABLE, DMT_REAL_COLUMN, DMT_TYPE, DMT_VIRTUAL_COLUMN) VALUES ('country', 'col01', 'text', 'country_name');
- Click at bottom right the Execute button.
Insert metadata table values:
- Go to Administration > Database query.
- At the right bottom select JDBC from list.
- Paste the SQL in the box
DELETE FROM OKM_DB_METADATA_VALUE WHERE DMV_TABLE='country';
INSERT INTO OKM_DB_METADATA_VALUE (DMV_TABLE, DMV_COL00, DMV_COL01) VALUES ('country', '001', 'Australia');
INSERT INTO OKM_DB_METADATA_VALUE (DMV_TABLE, DMV_COL00, DMV_COL01) VALUES ('country', '002', 'Canada');
- Click the Execute button at the right bottom.
The insert queries depending on your database can not be matched, for example in Oracle:
INSERT INTO OKM_DB_METADATA_TYPE (DMT_ID, DMT_TABLE, DMT_REAL_COLUMN, DMT_TYPE, DMT_VIRTUAL_COLUMN) VALUES (HIBERNATE_SEQUENCE.NEXTVAL, 'country', 'col00', 'integer', 'country_id');
More information at: Creating your own database tables.
Finally the XML definition:
- In optionsQuery the values that begins with character $ are identified as column names. See $country_id and $country_name below.
- Can use normal sql clauses like "order by" etc.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE workflow-forms PUBLIC "-//OpenKM//DTD Workflow Forms 2.6//EN"
"http://www.openkm.com/dtd/workflow-forms-2.6.dtd">
<workflow-forms>
<workflow-form task="select test">
<select label="country" name="country" type="simple" table="country"
optionsQuery="select $country_id, $country_name from DatabaseMetadataValue dmv where dmv.table='country' order by $country_name" />
</workflow-form>
</workflow-forms>
Based on SQL query
We can also get these option values using a SQL query. This SQL sentence should be put on the optionsQuery attribute, but the table attribute should be empty (otherwise this query is used as a metadata query). Note that the first element returned in every row is the option value and the second one is the option label.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE workflow-forms PUBLIC "-//OpenKM//DTD Workflow Forms 2.4//EN"
"http://www.openkm.com/dtd/workflow-forms-2.4.dtd">
<workflow-forms>
<workflow-form task="select test">
<select label="country" name="country" type="simple"
optionsQuery="select CT_ID, CT_NAME from COUNTRY order by CT_NAME" />
</workflow-form>
</workflow-forms>
The table used in this sample is defined as:
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');