メッセージ型がプリミティブ型である場合、ラベルおよび入力フィールドがレンダリングされます。メッセージ型がデータ・オブジェクトである場合、コンポーネントはオブジェクトを全探索し、オブジェクト内のエレメントをレンダリングします。
- 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, e.g. 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 ファイル内の適切なリスト・ハンドラーにエントリーを追加します。
MyHandler Bean は、getInputMessage および getOutputMessage メソッドを提供します。これらのメソッドはどちらも、MessageWrapper オブジェクトを戻します。メソッドは、参照されたタスク・インスタンス Bean への呼び出しを委任します。例えばメッセージが設定されていないなどの理由で、タスク・インスタンス Bean がヌルを戻した場合、ハンドラーは新規に空のメッセージを作成して保管します。Message コンポーネントは MyHandler Bean が提供するメッセージを表示します。