BPMN

Estoy aprendiendo de una vez por todas a modelar en BPMN, asi que quiero compartir una gran herramienta llamada BizAgi para modelar. Tiene un versión free y otra pagada.
En la parte superior derecha de la aplicación, no olviden colocar el mode “Extended”, esto es para tener mas elementos en el panel (gracias Edgard por el dato).
Video para entender SCRUM en menos de 10 minutos
Este es mi primer post (espero que el primero de muchos) relacionado con metodologías ágiles. Les dejo un video bastante bueno para entender en que consiste SCRUM.
Crear Procedimiento Almacenado en DB2 con parametros de salida y resultset, luego consumirlo desde Java.
No soy un partidario de utilizar Procedimientos Almacenados (Stored Procedures), pero cuando se trabaja con empresas externas, aunque duela, hay que aprender.
Actualmente en el proyecto que estoy trabajando debia crear un procedimiento almacenado “dummy” en DB2 que retornara un parametro de salida y adicionalmente un resultset, esto me pareció bastante curioso ya que los SP no estan concebidos para eso. De todas maneras esto se puede hacer y leyendo la documentación de IBM DB2 encontré la respuesta.
Crear el procedimiento
Para poder retornar un resultset, primero debemos tener una tabla y en este caso le llamaremos “MITABLA”. Luego crearemos un procedimiento almacenado que devuelva un parametro de salida y el resultset.
El código del procedimiento
Aquí la clave es declarar el cursor con “with return”
CREATE PROCEDURE "MIESQUEMA".SP_CON_RESULTSET(
OUT CODIGO varchar(20))
LANGUAGE SQL
DYNAMIC RESULT SETS 1
BEGIN
--DECLARAMOS EL CURSOR PARA EL RESULTSET
DECLARE C1 CURSOR WITH RETURN FOR SELECT * FROM MITABLA;
--SETEAMOS EL PARAMETRO DE SALIDA
SET CODIGO = '1313';
OPEN C1;
RETURN;
END
Consumir SP desde Java
Hay dos formas de obtener el resultset, la primera es utilizar el método executeQuery() que retorna el resultset y la segunda es la mencionada a continuación, utilizar execute() y luego getResultSet()
public void callSP(){
ResultSet result = null;
CallableStatement cstmt = null;
try {
String procName = "MIESQUEMA.SP_CON_RESULTSET";
//concatenamos
String sql_ = "CALL " + procName + "(?)";
cstmt = con.prepareCall(sql_);
//Registramos el parametro de salida y el tipo de dato
cstmt.registerOutParameter( 1, Types.CHAR);
//Realizando la llamada
cstmt.execute();
//Obtenemos el parametro de salida
String codigoSalida = cstmt.getString(1);
//Obtenemos el resultset
result = (ResultSet) cstmt.getResultSet();
while (result.next()) {
//Aquí iteramos sobre el resultset
}
} catch (SQLException e) {
//En caso de un excepción
}
}
Wordpress Syntax Highlighter pérdida de los tabs o indentación (Solución)
Hay un problema bastante molestoso al pegar código de muestra en wodpress y es la perdida de las tabulaciones al copiar y pegar código a wordpress.
La solución
Es simple, basta con reemplazar cada tab (tabulación) por 4 espacios, estéticamente quedará igual y no se perderá al pegar a wordpress.
Si utilizas eclipse puedes transformar tu tab a 4 espacios de la siguiente manera:
Preferences>Java>formatter>Edit
En tab policy dejamos solo en “Spaces Only” y en indent size en “4″
Empezar con Google App Engine (JAVA)
Mucha gente huye de Java y no precisamente por la inherente dificultad de aprender este lenguaje, la mayoría lo hace simplemente porque les complica configurar un ambiente de desarrollo y ademas no existen muchas alternativas de alojamiento como en PHP, pero todo esto puede cambiar si aprendemos a utilizar Google App Engine.
![google_appengine[1]_2 google_appengine[1]_2](http://blog.pontt.com/wp-content/uploads/2009/08/google_appengine1_2.png)
Google App Engine es un servicio de Google bajo el concepto de cloud computing en el cual no nos preocupamos del servidor de aplicaciones ni tampoco de donde alojaremos nuestra data. Lo único que necesitamos para empezar es bajar el SDK, escribir código, compilar y luego realizar el anhelado deploy.
Utilizar getJSON(jQuery) con Java(Struts) crossdomain.

Hace poco en un proyecto tuve que integrar información entre un html y un servlet (struts), tenia que ser con AJAX mediante un html generado con un javascript incrustado en cualquier dominio, claramente no es posible utilizar AJAX si el html esta en un dominio distinto al servidor que envía la respuesta, pero se puede hacer algo similiar.
¿Que hacer?
Existe una libreria llamada JSONP que permite incrustar archivos javascript despues de haber cargado la página y justamente es lo que utiliza la función $.getJSON() de jQuery.
¿Como generar un JSON “leible” por $.getJSON()?
Primero que nada, para consumir un JSON remoto debemos enviar el parametro jsoncallback y con valor “?”, despues en struts lo concatenamos a la respuesta que generemos. Es importante hacer esto ya que de otra forma no funcionará.
Por ejemplo si el JSON generado es:
{"nombre":"andres","edad":24}
La respuesta en struts debe quedar así.
?({"nombre":"andres","edad":24})
Por lo tanto, desde el lado del cliente debemos llamar de la siguiente manera al action de struts.
$.getJSON("http://10.10.20.101:8080/proyecto/controller.do?action=obtenerJson&jsoncallback=?",
function(data){}
//Imprimimos nombre
alert(data.nombre);
);
Del lado del servidor generamos así la respuesta
public ActionForward obtenerJson(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
//Guardamos en una variable el JSON
String json = "{\"nombre\":\"Andres\",\"edad\":\"24\"}";
//Capturamos el parametro
String callback = request.getParameter("jsoncallback");
//Concatenamos la respuesta y dejamos entre parentesis la respuesta
String jsonOutput = callback + "(" + json + ")";
//Enviamos al jsp
request.setAttribute("variable",jsonOutput);
return mapping.findForward(forward);
}
Servicios PSD a HTML / XHTML
Aprovecho de poner este aviso, yo con un amigo realizamos maquetas PSD a HTML, es decir mediante una gráfica realizada en photoshop la transformarmos en un sitio web HTML/XHTML strict o transitional validado con los estandares W3C, totalmente crossbrowser (se ve igual en todos los navegadores mas utilizados).
Cualquier consulta escribir un mail a
ponttdotcom [@] gmail . com
Se buscan Web Developers (Desarrolladores Web) para trabajo.
En el lugar donde trabajo estan buscando Web Developers con las siguientes caracteristicas:
Manejo semántico del XHTML – (Maquetación sin tablas).
Conocimientos de Javascript (Libreria de preferencia jQuery)
CSS
El flujo de trabajo es el siguiente, mediante un PSD (Imagen compuesta hecha en Photoshop) se cortan las imagenes, fondos, íconos y se maqueta una página web.
Obviamente acá piden expertos pero siendo realista tengo muy claro que nadie nace sabiendo por lo que realmente interesa son las ganas de aprender.
Si estan interesados envien un e-mail a
ponttdotcom [arroba] gmail punto com
Ah, se me olvidaba.. el lugar físico del trabajo es en Santiago de Chile comuna Providencia.
Como JSON ayuda a la separación efectiva de capas y/o roles en J2EE. Parte II
En el post anterior, prometí argumentar como solucionar el “punto ciego” entre el area de programación y web con JSON.
Antes que nada, quiero mencionar 2 casos de exito de uso cotidiano.
1.- GMAIL:
Este es mi ejemplo favorito de como la precarga de objetos JSON ayuda al rendimiento, Gmail carga todos los mails, labels, carpetas con JSON (arreglos javascript) y los renderea obviamente con javascript.
2.-Netvibes:
Este es un caso extremo, practicamente todo el sitio se renderea con javascript utilizando objetos JSON, si no me creen solo vean el código fuente, casi nada de XHTML.
Como JSON ayuda a la separación efectiva de capas y/o roles en J2EE. Parte I
Mis comienzos en la informática parten con el mundo WEB, esto debido a una necesidad imperante de ganar dinero (pagarme la universidad), me fue mucho mas sencillo hacer páginas web. Por lo que gané bastante experiencia en el desarrollo de front-end, aprendiendo la diferencia entre XHTML Transitional y Strict o HTML, desarrollo de sitios lidiando con el infame Internet Explorer 6.