Añada el componente de mensajes al archivo JSP (JavaServer Pages). Añada el código bpe:form al código <h:form>.
El código bpe:form debe incluir un atributo model.
En el ejemplo siguiente se muestra cómo añadir un componente de mensajes.
<h:form>
<h:outputText value="Input Message" />
<bpe:form model="#{MyHandler.inputMessage}" readOnly="true" />
<h:outputText value="Output Message" />
<bpe:form model="#{MyHandler.outputMessage}" />
</h:form>
El atributo model del componente de mensajes hace referencia a un objeto com.ibm.bpc.clientcore.MessageWrapper. Este objeto de envoltorio
envuelve un objeto SDO (Service Data Object) o un tipo primitivo
Java, por ejemplo, int o boolean. En el
ejemplo, el mensaje lo suministra una propiedad del bean gestionado MyHandler.
Añada el código personalizado a la aplicación JSF. El
siguiente ejemplo muestra cómo implementar mensajes de entrada y salida.
public class MyHandler implements ItemListener {
private TaskInstanceBean taskBean;
private MessageWrapper inputMessage, outputMessage
/* Método de escucha, por ejemplo, cuando se ha seleccionado una instancia de
* tarea en un manejador de listas.
* Asegúrese de que el manejador se registre en faces-config.xml o manualmente.
*/
public void itemChanged(Object item) {
if( item instanceof TaskInstanceBean ) {
taskBean = (TaskInstanceBean) item ;
}
}
/* Obtener el envoltorio de mensajes de entrada
*/
public MessageWrapper getInputMessage() {
try{
inputMessage = taskBean.getInputMessageWrapper() ;
}
catch( Exception e ) {
; //...pasar por alto errores para simplicidad
}
return inputMessage;
}
/* Obtener el envoltorio de mensajes de salida
*/
public MessageWrapper getOutputMessage() {
// Recuperar el mensaje del bean. Si no hay ningún mensaje, cree uno
// si la tarea ha sido reclamada por el usuario. Asegúrese de que sólo
// los propietarios potenciales o los propietarios pueden manejar el
// mensaje de salida.
try{
outputMessage = taskBean.getOutputMessageWrapper();
if( outputMessage == null
&& taskBean.getState() == TaskInstanceBean.STATE_CLAIMED ) {
HumanTaskManagerService htm = getHumanTaskManagerService();
outputMessage = new MessageWrapperImpl();
outputMessage.setMessage(
htm.createOutputMessage( taskBean.getID() ).getObject()
);
}
}
catch( Exception e ) {
; //...pasar por alto errores para simplicidad
}
return outputMessage
}
}
El bean gestionado MyHandler implementa la interfaz com.ibm.jsf.handler.ItemListener
de manera que pueda registrarse como un receptor de elementos en manejadores de lista.
Cuando el usuario pulsa un elemento de la lista, se envía una notificación al
bean MyHandler sobre el elemento seleccionado en su método
itemChanged( Object item ). El manejador comprueba el tipo de elemento y, a
continuación, almacena una referencia al objeto TaskInstanceBean asociado.
Para utilizar esta interfaz, añada una entrada al manejador de lista adecuado
en el archivo faces-config.xml.
El bean MyHandler proporciona los métodos getInputMessage y
getOutputMessage.
Ambos métodos devuelven un objeto MessageWrapper.
Los métodos delegan las llamadas al bean de instancia de tarea al que se hace
referencia.
Si el bean de instancia de tarea devuelve un valor nulo, por ejemplo, porque no
se haya establecido un mensaje, el manejador crea y almacena un mensaje nuevo y
vacío. El componente de mensajes muestra los mensajes proporcionados por el bean
MyHandler.