
JSF アプリケーションへの Message コンポーネントの追加
Business Process Choreographer Explorer Message コンポーネントを使用して、JavaServer Faces (JSF) アプリケーション内で、データ・オブジェクトおよびプリミティブ型をレンダリングします。
このタスクについて
メッセージ型がプリミティブ型である場合、ラベルおよび入力フィールドがレンダリングされます。メッセージ型がデータ・オブジェクトである場合、コンポーネントはオブジェクトを全探索し、オブジェクト内のエレメントをレンダリングします。
手順
- Message コンポーネントを JavaServer Pages (JSP) ファイルに追加します。
bpe:form タグを <h:form> タグに追加します。 bpe:form タグには、model 属性が含まれていなければなりません。
以下の例では、Message コンポーネントを追加する方法を示します。
<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>Message コンポーネントの model 属性は、com.ibm.bpc.clientcore.MessageWrapper オブジェクトを参照します。 このラッパー・オブジェクトは、サービス・データ・オブジェクト (SDO) オブジェクトか、または int や boolean などの Java™ プリミティブ型のいずれかをラップします。例では、メッセージは MyHandler 管理対象 Bean のプロパティーによって提供されます。
- bpe:form タグで参照されている管理対象 Bean を構成します。
以下の例では、MyHandler 管理対象 Bean を構成ファイルに追加する方法を示します。
<managed-bean> <managed-bean-name>MyHandler</managed-bean-name> <managed-bean-class>com.ibm.bpe.sample.jsf.MyHandler</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> <managed-property> <property-name>type</property-name> <value>com.ibm.task.clientmodel.bean.TaskInstanceBean</value> </managed-property> </managed-bean> - JSF アプリケーションにカスタム・コードを追加します。
以下の例では、入力メッセージおよび出力メッセージを実装する方法を示します。
public class MyHandler implements ItemListener { private TaskInstanceBean taskBean; private MessageWrapper inputMessage, outputMessage /* Listener method, for example, when a task instance was selected in a list handler. * Ensure that the handler is registered in the faces-config.xml or manually. */ public void itemChanged(Object item) { if( item instanceof TaskInstanceBean ) { taskBean = (TaskInstanceBean) item ; } } /* Get the input message wrapper */ public MessageWrapper getInputMessage() { try{ inputMessage = taskBean.getInputMessageWrapper() ; } catch( Exception e ) { ; //...ignore errors for simplicity } return inputMessage; } /* Get the output message wrapper */ public MessageWrapper getOutputMessage() { // Retrieve the message from the bean. If there is no message, create // one if the task has been claimed by the user. Ensure that only // potential owners or owners can manipulate the output message. 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 ) { ; //...ignore errors for simplicity } return outputMessage } }MyHandler 管理対象 Bean は、リスト・ハンドラーへの項目リスナーとして登録できるように、com.ibm.jsf.handler.ItemListener インターフェースを実装します。ユーザーがリスト内の項目をクリックすると、選択された項目について MyHandler Bean が itemChanged( Object item ) メソッドで通知されます。ハンドラーは、項目タイプを検査してから、関連した TaskInstanceBean オブジェクトへの参照を保管します。このインターフェースを使用するには、faces-config.xml ファイル内の適切なリスト・ハンドラーの itemListener リストにエントリーを追加します。
MyHandler Bean は、getInputMessage および getOutputMessage メソッドを提供します。これらのメソッドはどちらも、MessageWrapper オブジェクトを戻します。メソッドは、参照されたタスク・インスタンス Bean への呼び出しを委任します。例えばメッセージが設定されていないなどの理由で、タスク・インスタンス Bean がヌルを戻した場合、ハンドラーは新規に空のメッセージを作成して保管します。Message コンポーネントは MyHandler Bean が提供するメッセージを表示します。
タスクの結果
Message コンポーネント: タグ定義
Business Process Choreographer Explorer Message コンポーネントは、JavaServer Faces (JSF) アプリケーション内で、commonj.sdo.DataObject オブジェクトと、整数およびストリングなどのプリミティブ型をレンダリングします。