Los portlets creados utilizando la opción de modelo de generación de código Básico
necesitan habilitación adicional para manejar procesos comerciales.
Al crear un portlet de proceso comercial utilizando el asistente Proyecto de portlet nuevo
o el asistente Portlet nuevo, puede especificar un modelo de portlet Faces o Básico para generar
código para la iniciación de procesos o el proceso de tarea. Sin embargo, en el caso de un portlet
Básico, una vez que el asistente haya generado el código base, hay pasos adicionales que debe
realizar para habilitar el portlet de proceso comercial.
- Para habilitar un portlet de iniciación de proceso, siga estos pasos:
- Cree la interfaz de usuario para un mensaje de entrada en el archivo de JSP de
portlet. Por ejemplo, añada un código <form> con códigos <input> para el mensaje de
entrada y un URL de acción.
- Implemente processAction() (API JSR 168) o
actionPerformed() (API de portlet de
IBM) para almacenar
los valores de parámetro de petición en las partes correspondientes del mensaje de entrada.
Nota: Si el mensaje de entrada tiene componentes de mensaje que son tipos complejos, los parámetros de
petición deben almacenarse en un tipo complejo creado y almacenado en la parte del mensaje
correspondiente. Consulte el ejemplo siguiente.
- Llame a initiateProcess() en
processAction() (API JSR 168) o actionPerformed()
(API de portlet de
IBM.) Por ejemplo:
public void processAction(ActionRequest request, ActionResponse response) throws PortletException, java.io.IOException {
if( request.getParameter("initiateProcess") != null ) {
PortletSession session = request.getPortletSession();
Map inputMessage = (Map)session.getAttribute(ProcessInitiationHelper.PROCESS_INPUT_MESSAGE);
inputMessage.put("Destination", request.getParameter("Destination"));
inputMessage.put("StartDate", request.getParameter("StartDate"));
inputMessage.put("Reason", request.getParameter("Reason"));
FlightReservation flightReservation = new FlightReservation();
flightReservation.setStartdate(request.getParameter("FlightReservation.startdate"));
flightReservation.setStarttime(request.getParameter("FlightReservation.starttime"));
flightReservation.setEnddate(request.getParameter("FlightReservation.enddate"));
flightReservation.setEndtime(request.getParameter("FlightReservation.endtime"));
flightReservation.setSourceairport(request.getParameter("FlightReservation.sourceairport"));
flightReservation.setDestinationairport(request.getParameter("FlightReservation.destinationairport"));
flightReservation.setAirline(request.getParameter("FlightReservation.airline"));
flightReservation.setSeatclass(request.getParameter("FlightReservation.seatclass"));
inputMessage.put("FlightReservation", flightReservation);
Employee requestor = new Employee();
requestor.setId(request.getParameter("Requestor.id"));
inputMessage.put("Requestor", requestor);
ProcessInitiationHelper helper = getProcessInitiationHelper(request);
helper.initiateProcess();
}
}
- Para habilitar un portlet de proceso de tareas, siga estos pasos:
- Cree interfaces de usuario para los mensajes de entrada y de salida en el archivo JSP
de portlet. Por ejemplo, añada un código <form> con códigos <input> para el mensaje de
entrada y un URL de acción.
- Implemente processAction() (API JSR 168) o
actionPerformed() (API de portlet de
IBM) para almacenar
los valores de parámetro de petición en las partes correspondientes del mensaje de salida.
Nota: Si el mensaje de entrada tiene componentes de mensaje que son tipos complejos, los parámetros de
petición deben almacenarse en un tipo complejo creado y almacenado en la parte del mensaje
correspondiente.
- Llame a processTask() y, opcionalmente, a
closePage(), en processAction() (API JSR 168) o
actionPerformed() (API de portlet de
IBM.) Por ejemplo:
public void processAction(ActionRequest request, ActionResponse response) throws PortletException, java.io.IOException {
TaskProcessingHelper taskProcessingHelper = getTaskProcessingHelper(request);
if (taskProcessingHelper != null)
taskProcessingHelper.receivePageContext(request);
if( request.getParameter("processTask") != null ) {
PortletSession session = request.getPortletSession();
Map outputMessage = (Map)session.getAttribute(TaskProcessingHelper.TASK_OUTPUT_MESSAGE);
outputMessage.put("Worker", request.getParameter("Worker"));
outputMessage.put("managerApproved", new Boolean(request.getParameter("managerApproved") != null));
taskProcessingHelper.processTask();
taskProcessingHelper.closePage(request, response);
}
}