Pega-le un ojo al DatabaseMetadataServlet, nosotros lo utilizamos desde el UI.
En el servlet veras cosas interesantes como crear un nuevo valor, una nueva secuencia, etc... ( esto en la wiki igual no esta explicado con mucha extensión y esta parte tengamos que documentarla con algun ejemplo ).
Y te aconsejamos hacer algun tipo de mapeo.
Este código que utilizamos desde el UI a traves del metadaService probablemente te dará alguna idea de como puedes montarlo en la parte de las clases del workflow para que el código quede mas comprensible
Code: Select allimport java.util.Map;
import com.google.gwt.user.client.rpc.IsSerializable;
import com.openkm.frontend.client.util.metadata.DatabaseMetadataCommon;
import com.openkm.frontend.client.util.metadata.DatabaseMetadataMap;
/**
* GWTDocumento
*
* @author jllort
*
*/
public class GWTDocumento extends DatabaseMetadataCommon implements IsSerializable {
// Metadata Virtual Name mapping
public static final String MV_TABLE_NAME = "documento";
public static final String MV_COLUMN_NAME_ID = "doc_id";
private Integer id;
@Override
public void loadFromMap(Map<String, String> map) {
super.loadFromMap(map);
if (map.containsKey(MV_COLUMN_NAME_ID)) {
setId(DatabaseMetadataMap.getIntegerValue(map.get(MV_COLUMN_NAME_ID)));
}
}
@Override
public Map<String, String> restoreToMap() {
Map<String,String> map = super.restoreToMap();
if (id!=null) {
map.put(MV_COLUMN_NAME_ID, DatabaseMetadataMap.mapIntegerValue(getId()));
}
return map;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
}
y esto
Code: Select all/**
* DatabaseMetadataCommon
*
* @author jllort
*
*/
public abstract class DatabaseMetadataCommon {
private Double realId;
private String realTable;
/**
* loadFromMap
*/
public void loadFromMap(Map<String,String> map) {
if (map.containsKey(DatabaseMetadataMap.MV_NAME_ID)) {
setRealId(DatabaseMetadataMap.getDoubleValue(map.get(DatabaseMetadataMap.MV_NAME_ID)));
}
if (map.containsKey(DatabaseMetadataMap.MV_NAME_TABLE)) {
setRealTable(map.get(DatabaseMetadataMap.MV_NAME_TABLE));
}
}
/**
* restoreToMap
*/
public Map<String,String> restoreToMap() {
Map<String,String> map = new HashMap<String,String>();
if (realId != null) {
map.put(DatabaseMetadataMap.MV_NAME_ID, DatabaseMetadataMap.mapDoubleValue(getRealId()));
}
if (realTable != null) {
map.put(DatabaseMetadataMap.MV_NAME_TABLE, getRealTable());
}
return map;
}
public Double getRealId() {
return realId;
}
public void setRealId(Double realId) {
this.realId = realId;
}
public String getRealTable() {
return realTable;
}
public void setRealTable(String realTable) {
this.realTable = realTable;
}
}