Page 2 of 2

Re: ayuda con process handlers

PostPosted:Fri Sep 16, 2011 9:16 pm
by jllort
Actualiza a la 5.1.8 que tienes en el integration.openkm.com

Lo que te esta diciendo en el caso de la postgre es que tienes que poner un identificador en la columna dmt_id ( en otras bases de datos como mysql esto no es necesario por que es un campo que se autoincrementa automaticamente al hacer el insert, pero en otras bases de datos hay que meter el idenficador unico de la fila manualmente por que no existe un autoincremental sino que postgresql y oracle funcionan con secuencias ), simplemente añade el campo en el insert y el valor 1,2,3 respectivamente.

Re: ayuda con process handlers

PostPosted:Tue Sep 20, 2011 5:55 pm
by xcgb
ya he actualizado a la 5.1.8, con esta actualizacoion ya se soluciono lo del Input de tipo date.
tambien ya se soluciono lo de la columna dmt_id, quedando la insercion como sigue:
Code: Select all
INSERT INTO OKM_DB_METADATA_TYPE (DMT_ID, DMT_TABLE, DMT_REAL_COLUMN, DMT_TYPE, DMT_VIRTUAL_COLUMN) VALUES (1, 'entrada', 'col00', 'text', 'ent_id');
INSERT INTO OKM_DB_METADATA_TYPE (DMT_ID, DMT_TABLE, DMT_REAL_COLUMN, DMT_TYPE, DMT_VIRTUAL_COLUMN) VALUES (2, 'entrada', 'col01', 'text', 'ent_fecha');
INSERT INTO OKM_DB_METADATA_TYPE (DMT_ID, DMT_TABLE, DMT_REAL_COLUMN, DMT_TYPE, DMT_VIRTUAL_COLUMN) VALUES (3, 'entrada', 'col02', 'text', 'ent_medio');

Re: ayuda con process handlers

PostPosted:Fri Sep 23, 2011 4:12 pm
by jllort
esto ya parece correcto.

Re: ayuda con process handlers

PostPosted:Mon Sep 26, 2011 5:13 pm
by xcgb
Si va saliendo poco a poco, aun tengo problemas con:


1) insertar en la base de datos virtual los datos desde el process handlers (en la documentacion de Database Metadata no tienen una funcion para insertar)
Code: Select all
String sql_insert = "INSERT INTO OKM_DB_METADATA_VALUE (DMV_TABLE, DMV_ID, DMV_COL00, DMV_COL01, DMV_COL02) VALUES ('entrada', " + ent_id + ", " + ent_id + ", " + ent_fecha + ", " + ent_medio + ")";
-manualmente la insercion desde el Database Query funciona, pero tambien hay que agregarle el campo DMV_ID porque sino marca error.

2) falta obtener el valor de la opcion seleccionada de un Select


3) enviar notificacion por mail

Re: ayuda con process handlers

PostPosted:Tue Sep 27, 2011 5:18 pm
by jllort
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 all
import 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;
	}
}

Re: ayuda con process handlers

PostPosted:Tue Sep 27, 2011 7:59 pm
by xcgb
gracias por la respuesta, voy a revisar bien lo que me comentas
en un vistazo rapido no le veo por donde, estoy probando usar
el jdbc, es posible incluirlo en el handler??
Code: Select all
Class.forName("org.postgresql.Driver").newInstance();
			Connection con = DriverManager.getConnection("jdbc:postgresql://localhost:5432/okm_app", "openkm" ,  "*secret*");

			PreparedStatement prepstmt = con.prepareStatement("INSERT INTO okm_db_metadata_value VALUES(?,?,?,?,?,?,?,?,?,?)");
			prepstmt.setString(1, "");
			prepstmt.setString(2, "");
	.
			prepstmt.close();
				
			con.close();

Re: ayuda con process handlers

PostPosted:Wed Sep 28, 2011 10:38 am
by jllort
Yo te aconsejo utilizar las clases de MetadataDatabaseUtils que lo tienen todo encapsulado y tal. Pero bueno si quieres insertar directamente no tiene que haber ningún problema.