Skip to content
Other versions

Loading…

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:
- simple ( single choice allowed ).
- multiple ( multiple choice allowed ).
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. *
className A class 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
  • * There’re three options to get option values:

  • Child elements:

  • Type is equal to simple.
<?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="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>
  • Type is equal to multiple.
<?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="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>
  • The field option value of “childrenSelect” has a parent relation with “parentSelect”. It’s defined by parentElement=“parentSelect”.
  • The option value “benefits” of the field “childrenSelect” has a parent value “directives” from field “parentSelect”.

Tree relationships:

  • directives
    • benefits
    • eligibility
    • services
  • handbook
    • basic
    • normal
    • advanced
<?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="Parent" name="parentSelect" type="simple">
<option value="directives" label="Directives" />
<option value="handbook" label="Handbook Paragraphs" />
</select>
<select label="Children" name="childrenSelect" type="simple" parentElement="parentSelect">
<option value="benefits" label="Benefits" parentValue="directives" />
<option value="elegibility" label="Eligibility" parentValue="directives" />
<option value="services" label="Services" parentValue="directives" />
<option value="basic" label="Basic" parentValue="handbook" />
<option value="normal" label="Advanced" parentValue="handbook" />
<option value="advanced" label="Normal" parentValue="handbook" />
</select>
</workflow-form>
</workflow-forms>
  • 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.

  • Go to Administration > Utilities > 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 > Utilities > 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.

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>

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.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"
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');

To help getting a list from external applications or other purposes you can build your own class to retrieve from these systems the option values.

<?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="select label" name="okp:consulting.select" type="simple"
className="com.openkm.plugin.form.OptionSelectUserList" />
</workflow-form>
</workflow-forms>

For more information read: Creating your own Option Select Values plugin.