Mostrando entradas con la etiqueta Java Worklist Application. Mostrar todas las entradas
Mostrando entradas con la etiqueta Java Worklist Application. Mostrar todas las entradas

miércoles, 7 de mayo de 2008

Java WorkList Application : Oracle BPEL

Muchas personas me preguntan como crear una aplicación en java que se conecte al worklist application del sistema del workflow de Oracle SOA Suite. Cuando sigues la documentación y el API, no muchos pueden encontrar la solución a ciertos errores que regresa sobre todo en la conexión al JAZN que tiene por default u otro ambiente de LDAP. Y los que llegan a pasar de aquí se encuentran con la problemática de obtener los datos de la tarea (desplegarlos).

Así que para que no tengan que hacerlo, aquí esta como crear un Java custom worklist application para el workflow de Oracle SOA suite.

Iniciamos el Jdeveloper (mi versión es: 10.1.3.3.0.4157)

-----------------------------------------------------------------------------

BPEL CON WORKFLOW

Antes que otra cosa es necesario tener un código de BPEL que utilice un User Task. En el tutorial de BPEL hay un ejemplo de como crear user tasks (workflows). Lo encuentran aquí: http://download.oracle.com/docs/cd/B31017_01/integrate.1013/b28987/phase10.htm#sthref728

Lo que yo hice para pruebas fue generar un proyecto de BPEL, asíncrono, y todo lo dejé por default. Agregué una actividad user task, como usuario puse a jcooper, y lo que le envío como datos al workflow es el elemento request del flujo de BPEL. Este XSD de request de BPEL, lo utilizaremos después para generar las clases que permiten visualizar los campos de la tarea. Que en este caso, solo es un campo (el que viene por default, tipo string).

Aquí la imagen de mi BPEL para pruebas.

image

-----------------------------------------------------------------------------

ARCHIVO wf_client_config.xml

Hay que modificar el archivo SOA_SUITE_HOME\bpel\system\services\config\wf_client_config.xml

Ya que las clases de Java que generaremos hacen referencia a este archivo para la conexión remota al worklist.

Yo modifiqué los métodos de conexión así:

<ejb> <serverURL>opmn:ormi://HOSTNAME:6003:oc4j_soa/hw_services</serverURL>
<user>oc4jadmin</user>
<password>PASSWORD</password>
<initialContextFactory>oracle.j2ee.rmi.RMIInitialContextFactory</initialContextFactory>
</ejb>

<identityService>
<soapEndPoint>http://HOSTNAME:80/integration/services/IdentityService/identity</soapEndPoint>
</identityService>

En la primera parte el número 6003 es el puerto de OPMN request. oc4j_soa es la máquina virtual en donde se ejecuta BPEL. Y hostname el nombre de mi máquina

En el soapEndPoint el puerto 80, es el puerto por donde escucha el HTTP_Server. Y hostname el nombre de mi máquina

-----------------------------------------------------------------------------

PROYECTO

Ya que tenemos lo anterior generamos un nuevo proyecto:

1. En el TAB de Application>Botón derecho> New Application

2. En Application Name dar un nombre (en mi caso WorklistApplication)

3. Definir un nombre de proyecto (BasicWorklistApplication)

De tal modo que me queda así

image

4. Después sobre BasicWorkListApplication dar click derecho, y seleccionar Project Properties > seleccionar en la nueva ventana Libraries

image

5. Dar click en Add Library. Aquí requerimos de dos librerías, una que ya existe, y la otra que debemos de crear.

6. Seleccionar de la lista JSP Runtime y agregarla.

image

7. Después generamos una nueva librería, para esto damos de nuevo click en Add Library, y en la ventana donde nos permite seleccionar librerías, en la parte de abajo hay un botón que dice New, dar click ahí.

8. En library name: WorklistApplication, en Location seleccionamos User, y la librerías son las siguientes que se muestran en la figura. (OJO: DEBEN DE ESTAR EN EL MISMO ORDEN)

En mi caso mi OracleHome es: D:/oracle/soasuite/.

Buscar esas librerías en su HOME y darlas de alta.

OJO: La ultima es una librería debe bajarse desde aquí:

http://download.oracle.com/otn/java/oc4j/10131/wsclient_extended.zip

image

OJO: En la carpeta de bpel/services/config, debe de estar el archivo wf_client_config.xml que se modificó con los datos de conexión al servidor de BPEL

9. Dar click en aceptar, y de nuevo en Aceptar para cerrar la ventana de las propiedades del proyecto.

Ahora vamos a generar unas clases que serán las que se conecten al servicio de worklist.

10. Dar click derecho sobre el proyecto BasicWorklistApplication, y seleccionar New. Dentro de la nueva ventana, seleccionar SimpleFiles, y despues Java Class.

image

11. En la siguiente ventana:

Name: WorkflowOracle

Package: wanzjin.workflowclient.com

Y dar click en aceptar

12. Código de la clase WorkflowOracle.java

13. Repetir los pasos, pero generar una clase llamada TasksOracle.java, dentro del mismo paquete wanzjin.workflowclient.com

14. Código de la clase TasksOracle.java

Esas clases se encargan de tomar un usuario, un password, seleccionan un método de acceso (jazn), se conectan al worklist de Oracle, y obtienen las tareas de un usuario determinado.

(OJO: para ver las tareas, faltan pasos, pues el código de java debe de conocer cuales son los campos que tiene la tarea. Recuerden que en mi caso el BPEL tiene un usertask y la tarea solo tiene un campo de tipo string)

15. Vamos a generar varios JSP que contendrán la lógica para desplegar tareas. No tienen nada gráfico OK? solo es el esqueleto.

Para generarlos, dar click derecho en el nombre del proyecto, y seleccionar JSP como se muestra:

image

Los JSP que debemos crear son:

Check.jsp

Login.Jsp

Logout.jsp

Modify.jsp

ShowTask.jsp

UserTasks.jsp

(el código esta aquí)

image

Dar el nombre del JSP y dar click en terminar. Generar todos los JSP que se mencionan arriba.

-----------------------------------------------------------------------------

JAXB

Faltan algunas cosas, la primera es

16. Generar las clases de Java que hacen referencia a los campos que tiene la lista de tareas. Estos campos vienen definidos en el esquema de XML (XSD) que utilizamos para crear la tarea. En mi caso, el XSD que sabe los campos de la tarea, es el elemento request de BPEL. Así que voy por el archivo XSD del request. Lo encuentro en donde esta el proyecto de BPEL, en la carpeta de bpel.

image

17. Abrir el developer prompt de BPEL. Esta en Inicio>Oracle [Nombre de la instancia de BPEL] > Oracle BPEL Process Manager > Developer Prompt

Ahí ejecutar el siguiente comando:

orajaxb -outputDir DIRECTORIO_SALIDA -schema UBICACION_XSD

En mi caso lo ejecuté así:

orajaxb -outputDir D:\oracle\JaxbGenerated -schema D:\oracle\jdevstudio10133\jdev\mywork\Pruebas\WorkFlowAplicationTest\bpel\WorkFlowAplicationTest.xsd

Te genera las clases de Java en la carpeta de salida.

image

18. Copiar la carpeta que se generó en el directorio src de nuestro proyecto de Jdeveloper.

image

Y ahora podemos utilizar esas clases. Dar refresh en el applications navigator de Jdeveloper y deberían verse las clases nuevas.

El mío se ve así:

image

-----------------------------------------------------------------------------

Finalmente las clases que están en esta página, hacen referencia a mi esquema de XSD. para que funcione en tu caso, se deben de modificar las clases y los JSP en donde se manda llamar a estas clases.

En mi caso la clase que generó JAXB y las que usa el código son: WorkFlowAplicationTestProcessRequest y WorkFlowAplicationTestProcessRequestImpl

Hay que cambiar los nombres en el código de ejemplo, de acuerdo al nombre que generó el JAXB con tu XSD.

El código a cambiar esta en:

A) TasksOracle.java (ahí esta mi definición de WorkFlowAplicationTestProcessRequest y WorkFlowAplicationTestProcessRequestImpl)

B) ShowTask.jsp (Modificar los atributos que deseas que despliegue la página, en mi caso solo era un atributo, llamado Input "el default de BPEL", por eso en este JSP, dice <%=payload.getInput()%>, simplemente modificarlo con los atributos deseados)

Me parece que solo en esos dos hace referencia.

-----------------------------------------------------------------------------

PRUEBA

Hay que hacer una prueba primero de las clases de java, y de nuestra configuración de los archivos. Para esto ejecutar el BPEL que hicimos al inicio desde la Consola (esto lo hacemos para que exista una tarea en el worklist "para jcooper").

image

En el worklist application dentro de SOA Suite debería verse creada la tarea.

image

Después ejecutar la clase WorkflowOracle.java (tiene un método main que ejecuta la conexión de jcooper y muestra sus tareas en la ventana de Log de Jdeveloper. Debería de verse algo así (eso que seleccioné es el ID de la tarea dentro del sistema):

image

Si funciona esto, probar los JSP ejecutando el Login.jsp

Y ya que funciona, mejorar la parte gráfica de los JSP :P

Así se ve mi java worklist app (para pruebas - nada gráfico):

image

Espero esto ayude :D

Saludos!

Wanzjin

Códigos de Java Worklist Application

Aquí están los códigos de Java Worklist Application

Artículo publicado aquí

--------------------------------------------------------------

WorkflowOracle.java

--------------------------------------------------------------

package wanzjin.workflowclient.com;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.Stack;
import oracle.bpel.services.workflow.client.IWorkflowServiceClient;
import oracle.bpel.services.workflow.client.WorkflowServiceClientFactory;
import oracle.bpel.services.workflow.query.ITaskQueryService;
import oracle.bpel.services.workflow.repos.Ordering;
import oracle.bpel.services.workflow.repos.Predicate;
import oracle.bpel.services.workflow.repos.TableConstants;
import oracle.bpel.services.workflow.task.ITaskService;
import oracle.bpel.services.workflow.task.model.Task;
import oracle.bpel.services.workflow.verification.IWorkflowContext;

public class WorkflowOracle {
public WorkflowOracle() {
}
public Stack GetListTasks(String user, String Password, String realm){
Stack st= new Stack();
try {
IWorkflowServiceClient wfSvcClient = WorkflowServiceClientFactory.getWorkflowServiceClient(WorkflowServiceClientFactory.REMOTE_CLIENT);
ITaskQueryService querySvc = wfSvcClient.getTaskQueryService();

//Login as jcooper
IWorkflowContext ctx = querySvc.authenticate(user,Password,realm, null);
//Set up list of columns to query
List queryColumns = new ArrayList();
queryColumns.add("TASKID");
queryColumns.add("TASKNUMBER");
queryColumns.add("TITLE");
queryColumns.add("OUTCOME");
queryColumns.add("CREATEDDATE");
//Create a predicate to query tasks that have a null outcome
String outcome = null;
Predicate predicate = new Predicate(TableConstants.WFTASK_OUTCOME_COLUMN,Predicate.OP_EQ,outcome);
//Create an ordering to order tasks by task number
Ordering ordering = new Ordering(TableConstants.WFTASK_TASKNUMBER_COLUMN,true,false);
List additionalColumns = new ArrayList();
additionalColumns.add("ELEMENT");

List tasks = querySvc.queryTasks(ctx,
queryColumns,
null, //Query addtional info
ITaskQueryService.ASSIGNMENT_FILTER_ALL,
null, //No keywords
predicate, //No custom predicate
null, //No special ordering
0, //Do not page the query result
0);
for(int i = 0 ; i < tasks.size() ; i ++)
{
Task task = (Task)tasks.get(i);
String estado = task.getSystemAttributes().getOutcome();
if(estado==null){
String taskNumber = Integer.toString(task.getSystemAttributes().getTaskNumber());
String title = task.getTitle();
String taskId = task.getSystemAttributes().getTaskId();
int Mes= task.getSystemAttributes().getCreatedDate().get(Calendar.MONTH);
int YEAR= task.getSystemAttributes().getCreatedDate().get(Calendar.YEAR);
int DAY= task.getSystemAttributes().getCreatedDate().get(Calendar.DAY_OF_MONTH);
int Hora= task.getSystemAttributes().getCreatedDate().get(Calendar.HOUR);
int Minuto= task.getSystemAttributes().getCreatedDate().get(Calendar.MINUTE);
String cero="";
if(Minuto<10){
cero="0";
}
String mes="";
switch(Mes){
case 1: mes="Jan";
break;
case 2: mes="Feb";
break;
case 3: mes="Mar";
break;
case 4: mes="Apr";
break;
case 5: mes="May";
break;
case 6: mes="Jun";
break;
case 7: mes="Jul";
break;
case 8: mes="Aug";
break;
case 9: mes="Sept";
break;
case 10: mes="Oct";
break;
case 11: mes="Nov";
break;
case 12: mes="Dec";
break;
default : mes="Jan";
break;
}
String Fecha= mes + " "+ DAY+ ", "+ YEAR+ " "+Hora+":"+cero+Minuto;
String[] tarea= new String[4];
tarea[0]= taskId;
tarea[1]= taskNumber;
tarea[2]= title;
tarea[3]= Fecha;
//JUST FOR TESTS COMMENT THE NEXT LINES
System.out.println("-------------------------------------------------");
System.out.println("ID: "+ tarea[0]+" Number: "+ tarea[1]);
System.out.println("Title: "+ tarea[2]+" Date: "+ tarea[3]);
System.out.println("-------------------------------------------------");
// END OF TESTS
st.push(tarea);
}
}
}
catch (Exception e)
{
//Handle any exceptions raised here...
System.out.println("Caught workflow exception: "+e.getMessage());
e.printStackTrace();
}
return st;
}
public boolean actualizarTarea(String user, String Password, String realm,String respuesta, String taskId){
boolean actualizo=false;
try {
IWorkflowServiceClient wfSvcClient = WorkflowServiceClientFactory.getWorkflowServiceClient(WorkflowServiceClientFactory.SOAP_CLIENT);
ITaskQueryService querySvc = wfSvcClient.getTaskQueryService();
IWorkflowContext ctx = querySvc.authenticate(user,Password,realm, null);
ITaskService taskSvc = wfSvcClient.getTaskService();
getTask(user, Password, realm,respuesta, taskId);
if(respuesta.equals("1"))
taskSvc.updateTaskOutcome(ctx,taskId,"APPROVE");
else
taskSvc.updateTaskOutcome(ctx,taskId,"REJECT");
actualizo=true;
}
catch (Exception e)
{
//Handle any exceptions raised here...
System.out.println("Caught workflow exception: "+e.getMessage());
e.printStackTrace();
}
return actualizo;
}
public void getTask(String user, String Password, String realm,String respuesta, String taskId){
try {
IWorkflowServiceClient wfSvcClient = WorkflowServiceClientFactory.getWorkflowServiceClient(WorkflowServiceClientFactory.SOAP_CLIENT);
ITaskQueryService querySvc = wfSvcClient.getTaskQueryService();
IWorkflowContext ctx = querySvc.authenticate(user,Password,realm, null);
ITaskService taskSvc = wfSvcClient.getTaskService();
taskSvc.acquireTask(ctx,taskId);
}
catch (Exception e)
{
//Handle any exceptions raised here...
System.out.println("Caught workflow exception: "+e.getMessage());
e.printStackTrace();
}
}
public boolean checkUser(String user, String Password, String realm){
boolean existe= false;
try {
IWorkflowServiceClient wfSvcClient = WorkflowServiceClientFactory.getWorkflowServiceClient(WorkflowServiceClientFactory.SOAP_CLIENT);
ITaskQueryService querySvc = wfSvcClient.getTaskQueryService();
IWorkflowContext ctx = querySvc.authenticate(user,Password,realm, null);
existe=true;
}
catch(Exception e){
return existe;
}
return existe;
}
//FOR CONNECTION TESTS
public static void main(String[] args) {
WorkflowOracle twf= new WorkflowOracle();
twf.GetListTasks("jcooper","welcome1","jazn.com");
}
}

--------------------------------------------------------------

TasksOracle.java

--------------------------------------------------------------

package wanzjin.workflowclient.com;

import oracle.bpel.services.workflow.client.IWorkflowServiceClient;
import oracle.bpel.services.workflow.client.WorkflowServiceClientFactory;
import oracle.bpel.services.workflow.query.ITaskQueryService;
import oracle.bpel.services.workflow.task.model.Task;
import oracle.bpel.services.workflow.verification.IWorkflowContext;

import oracle.xml.parser.v2.XMLElement;
import com.oracle.xmlns.workflowaplicationtest.*;
import org.w3c.dom.Element;

public class TasksOracle {
public TasksOracle() {
}

public WorkFlowAplicationTestProcessRequest GetTarea(String user, String Password, String realm, String TaskId){
Element payload=null;
WorkFlowAplicationTestProcessRequest payloadElement =null;
try {
IWorkflowServiceClient wfSvcClient = WorkflowServiceClientFactory.getWorkflowServiceClient(WorkflowServiceClientFactory.REMOTE_CLIENT);
ITaskQueryService querySvc = wfSvcClient.getTaskQueryService();
IWorkflowContext ctx = querySvc.authenticate(user,Password,realm, null);
Task t= querySvc.getTaskDetailsById(ctx, TaskId);
payload = (Element) t.getPayloadAsElement();
payloadElement = new WorkFlowAplicationTestProcessRequestImpl((XMLElement) payload.getFirstChild());
}
catch(Exception e){
e.printStackTrace();
}
return payloadElement;
}
public static void main(String[] args) {
TasksOracle to= new TasksOracle();
WorkFlowAplicationTestProcessRequest payload= to.GetTarea("jcooper", "welcome1", "jazn.com","bc7431c56d947d4e:738f1886:119bd6667d6:-7a74" );
System.out.println(payload.getInput());
}

}

--------------------------------------------------------------

Login.jsp

--------------------------------------------------------------

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%@ page contentType="text/html;charset=windows-1252"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252"/>
<title>Login</title>
</head>
<body>
<%
//Can not login
if(request.getParameter("Existe")!=null && request.getParameter("Existe")!="" ){
%>
The user doesnt exist!
<%
}
%>
<form action="Check.jsp" method="post">
<input type="hidden" name="realm" value="jazn.com"/>
<table cellspacing="1" cellpadding="1" border="1" width="250">
<tr>
<td>
<div align="right">
user:
</div></td>
<td>
<input type="text" name="user" maxlength="30" size="8"/>
</td>
</tr>
<tr>
<td>
<div align="right">
password:
</div></td>
<td>
<input type="password" name="password" maxlength="30" size="8"/>
</td>
</tr>
<tr>
<td>
<div align="right">
&nbsp;
</div></td>
<td>
<input type="submit" name="Entrar" value="Entrar"/>
</td>
</tr>
</table>
</form></body>
</html>

--------------------------------------------------------------

Logout.jsp

--------------------------------------------------------------

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%@ page contentType="text/html;charset=windows-1252"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252"/>
<title>Logout</title>
</head>
<body>
<%
session.invalidate();
response.sendRedirect("Login.jsp");
%>
</body>
</html>

--------------------------------------------------------------

Check.jsp

--------------------------------------------------------------

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%@ page contentType="text/html;charset=windows-1252" language="java"
import="wanzjin.workflowclient.com.*"
import="java.util.Stack"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252"/>
<title>Check</title>
</head>
<body>
<%
WorkflowOracle wo= new WorkflowOracle();
boolean existe=wo.checkUser(request.getParameter("user"),request.getParameter("password"),request.getParameter("realm"));
if(existe==true){
session.setAttribute("user",request.getParameter("user"));
session.setAttribute("password",request.getParameter("password"));
session.setAttribute("realm",request.getParameter("realm"));
response.sendRedirect("UserTasks.jsp");
}
else
{
response.sendRedirect("Login.jsp?Existe=No");
}
%>
</body>
</html>

--------------------------------------------------------------

Modify.jsp

--------------------------------------------------------------

<%@ page contentType="text/html;charset=windows-1252" language="java"
import="wanzjin.workflowclient.com.*,com.oracle.xmlns.workflowaplicationtest.*"
import="oracle.xml.parser.v2.XMLElement"
import="org.w3c.dom.*"
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252"/>
<title>Modificada</title>
</head>
<%
String user= (String) session.getAttribute("user");
if(user==null || user==""){
response.sendRedirect("Login.jsp?Existe=No");
}
String password= (String) session.getAttribute("password");
String realm= (String) session.getAttribute("realm");
WorkflowOracle wo= new WorkflowOracle();
boolean respuesta= wo.actualizarTarea(user, password,realm,request.getParameter("cambioTarea"), request.getParameter("taskid"));
response.sendRedirect("UserTasks.jsp");
%>
<!--<body onLoad="javascript:window.close();"></body>-->

</html>

--------------------------------------------------------------

ShowTask.jsp

--------------------------------------------------------------

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%@ page contentType="text/html;charset=windows-1252" language="java"
import="wanzjin.workflowclient.com.*,com.oracle.xmlns.workflowaplicationtest.*"
import="oracle.xml.parser.v2.XMLElement"
import="org.w3c.dom.*"
%>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252"/>
<title>Show Task</title>
</head>
<body>
<%
String taskid= request.getParameter("TaskId");
String tasknumber= request.getParameter("TaskNumber");
String title= request.getParameter("Title");
String fecha= request.getParameter("Fecha");
String user= (String) session.getAttribute("user");
if(user==null || user==""){
response.sendRedirect("Login.jsp?Existe=No");
}
String pass= (String) session.getAttribute("password");
String realm= (String) session.getAttribute("realm");
TasksOracle to= new TasksOracle();
WorkFlowAplicationTestProcessRequest payload= to.GetTarea(user, pass, realm,taskid );
if(payload== null){
%>Task does not exist...<%
}
else{
%>
<a href="Logout.jsp">
Logout
</a>
<form name="aceptar" method="POST" action="Modify.jsp">
<input type="hidden" name="taskid" value="<%=taskid%>"/>
<table>
<tr>
<td>
<%=payload.getInput()%>
</td>
<td>
<select size="1" name="cambioTarea">
<option value="1">
Aceptar
</option>
<option value="2">
Rechazar
</option>
</select>
</td>
<td>
<input type="submit" value="modificar" name="modificar"/>
</td>
</tr>
</table>
</form><p><a href="UserTasks.jsp">
Back
</a>
</p>
<%}%>
</body>
</html>

--------------------------------------------------------------

UserTasks.jsp

--------------------------------------------------------------

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%@ page contentType="text/html;charset=windows-1252" language="java"
import="wanzjin.workflowclient.com.*"
import="java.util.Stack"%>
<html>
<head>
<meta http-equiv="refresh" content="4">
<title>IniciarT1</title>
</head>
<body><p>
<%
//Refresh
if(request.getParameter("Actualizada")!=null && request.getParameter("Actualizada")!="" ){
if(request.getParameter("Actualizada").equals("true")){
%>Task Refresh...<%
}
else{
%>The refresh cannot be executed<%
}
}
//Refresh
WorkflowOracle wo= new WorkflowOracle();
String user= (String) session.getAttribute("user");
String password= "";
String realm= "";
if(user==null || user==""){
if(request.getParameter("user")==null || request.getParameter("user")==""){
response.sendRedirect("Login.jsp?Existe=No");
}
else{
user= request.getParameter("user");
password= request.getParameter("password");
realm= "jazn.com";
WorkflowOracle wo2= new WorkflowOracle();
boolean existe=wo2.checkUser(request.getParameter("user"),request.getParameter("password"),request.getParameter("realm"));
if(existe==true){
session.setAttribute("user",request.getParameter("user"));
session.setAttribute("password",request.getParameter("password"));
session.setAttribute("realm",realm);
response.sendRedirect("UserTasks.jsp");
}
else
{
response.sendRedirect("Login.jsp?Existe=No");
}
}
}
password= (String) session.getAttribute("password");
realm= (String) session.getAttribute("realm");
Stack tareas= wo.GetListTasks(user,password,realm);
int numeroTareas= tareas.size();
%>
<a href="Logout.jsp">
Logout
</a>
</p><p>
<a href="UserTasks.jsp">
Manual Refresh
</a>
</p><table cellspacing="1" cellpadding="1" border="1" align="center" width="80%">
<tr>
<td>
Numero de Tarea
</td>
<td>
Titulo
</td>
<td>
Fecha de creacion
</td>
<td>&nbsp;</td>
</tr>
<%
String[] b= null;
for(int a=0; a<numeroTareas;a++){
b= (String[]) tareas.pop();
%>
<form name="mostrarTarea" action="ShowTask.jsp" method="post">
<tr>
<td>
<input type="hidden" name="user" value="<%=user%>"/>
<input type="hidden" name="password" value="<%=password%>"/>
<input type="hidden" name="realm" value="<%=realm%>"/>
<input type="hidden" name="TaskId" value="<%=b[0]%>"/>
<input type="text" name="TaskNumber" value="<%=b[1]%>"/>
</td>
<td>
<input type="text" name="Title" value="<%=b[2]%>"/>
</td>
<td>
<input type="text" name="Fecha" value="<%=b[3]%>"/>
</td>
<td>
<input type="submit" name="Ver" value="Ver"/>
</td>
</tr>
</form>
<%
}
%>
</table>
</body>
</html>

------------------------------------------------------------------

 
Themes by: Free Templates Studio. Powered by Blogger