Crear su propio plugin de Autocomplete Form
Puede crear su propio formulario de autocompletado.
Condiciones:
- La nueva clase Autocomplete Form Values debe implementar la interfaz “AutocompleteFormValues”.
- La nueva clase Default Form Values debe declararse en el paquete “com.openkm.plugin.form.values”.
- La nueva clase Default Form Values debe estar anotada con “@PluginImplementation”.
- La nueva clase Default Form Values debe extender “BasePlugin”.
Interfaz AutocompleteFormValues:
package com.openkm.plugin.form.values;
import com.openkm.bean.form.*;import net.xeoh.plugins.base.Plugin;
import java.util.List;import java.util.Map;
public interface AutocompleteFormValues extends Plugin { String getName();
void autocomplete(String uuid, String grpName, List<FormElement> formElementList);
/** * Helper method to autocomplete form elements with provided properties. * Sets matching values on Input, CheckBox, TextArea, SuggestBox, and Select elements. */ default void autocompleteHelper(List<FormElement> formElementList, Map<String, String> props) { // ... default implementation provided by the interface }}La nueva clase debe cargarse en el paquete com.openkm.plugin.form.values porque el sistema de plugins de la aplicación intentará cargarla desde ahí. Vea el ejemplo a continuación:
Descripción del método
Sección titulada «Descripción del método»| Método | Tipo | Descripción |
|---|---|---|
| autocomplete(String uuid, String grpName, List |
void | El método autocompleta los elementos de formulario del grupo. |
Ejemplo de implementación de valores de formulario de autocompletado
Sección titulada «Ejemplo de implementación de valores de formulario de autocompletado»package com.openkm.plugin.form.values;
import com.openkm.bean.form.FormElement;import com.openkm.bean.form.HorizontalPanel;import com.openkm.bean.form.Input;import com.openkm.bean.form.VerticalPanel;import com.openkm.plugin.BasePlugin;import lombok.extern.slf4j.Slf4j;import net.xeoh.plugins.base.annotations.PluginImplementation;import org.apache.commons.lang3.StringUtils;
import java.util.List;
@Slf4j@PluginImplementationpublic class SampleAutocompleteFormValues extends BasePlugin implements AutocompleteFormValues { @Override public String getName() { return "Sample autocomplete form values implementation"; }
@Override public void autocomplete(String uuid, String grpName, List<FormElement> formElementList) { log.info("autocomplete({}, {}, {})", uuid, grpName, formElementList); autocompleteValues(formElementList); }
private void autocompleteValues(List<FormElement> formElementList) { for (FormElement formElement : formElementList) { if (formElement instanceof Input input) { if (Input.TYPE_TEXT.equals(input.getType()) && StringUtils.isEmpty(input.getValue())) { input.setValue("Autocomplete with name: " + formElement.getName()); } } else if (formElement instanceof HorizontalPanel hPanel) { autocompleteValues(hPanel.getElements()); } else if (formElement instanceof VerticalPanel vPanel) { autocompleteValues(vPanel.getElements()); } } }}Definición de metadatos
Sección titulada «Definición de metadatos»<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE property-groups PUBLIC "-//OpenKM//DTD Property Groups 3.11//EN" "http://www.openkm.com/dtd/property-groups-3.11.dtd"><property-groups> <property-group label="Autocomple sample" name="okg:autocomplete" autocompleteValueClassName="com.openkm.plugin.form.values.SampleAutocompleteFormValues"> <input label="Input label first" name="okp:autocomplete.first" type="text"/> <hpanel name="okp:autocomplete.horizontal1"> <input label="Input label 1" name="okp:autocomplete.input_h1" /> <input label="Input label 2" name="okp:autocomplete.input_h2" /> </hpanel> </property-group></property-groups>Extracción de metadatos usando IA
Sección titulada «Extracción de metadatos usando IA»Si un documento contiene texto extraído y los parámetros de inteligencia artificial están correctamente configurados en los ajustes de la aplicación OpenKM, los metadatos se pueden extraer automáticamente usando el siguiente plugin de autocompletado:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE property-groups PUBLIC "-//OpenKM//DTD Property Groups 3.11//EN" "http://www.openkm.com/dtd/property-groups-3.11.dtd"><property-groups> <property-group label="Consulting" name="okg:consulting" autocompleteValueClassName="com.openkm.plugin.form.values.AIAutocompleteFormValues"> <input label="Input label" name="okp:consulting.input1" /> <separator label="Separator label" name="okp:consulting.separator" /> <input label="Input label" name="okp:consulting.input2" /> </property-group></property-groups>