JSF(JavaServer Faces) 응용프로그램에서 데이터 오브젝트 및 프리미티브 유형을 표현하려면
Business Process Choreographer 탐색기 메시지 구성요소를 사용하십시오.
메시지 유형이 프리미티브 유형일 경우 레이블 및 입력 필드가 표현됩니다. 메시지 유형이 데이터 오브젝트일 경우 구성요소는 이 오브젝트를 트래버스하여 오브젝트 내에 요소를
표현합니다.
- JSP(JavaServer Pages) 파일에 메시지 구성요소를 추가하십시오.
<h:form> 태그에 bpe:form 태그를 추가하십시오.
bpe:form 태그는 model 속성을 포함해야 합니다.
다음 예는 메시지 구성요소를
추가하는 방법을 보여줍니다.
<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>
메시지 구성요소의 model 속성은
com.ibm.bpc.clientcore.MessageWrapper 오브젝트를 나타냅니다.
이 랩퍼 오브젝트는 서비스 데이터 오브젝트(SDO) 오브젝트 또는 Java™
프리미티브 유형(예: int 또는 boolean)을 랩핑합니다. 이 예에서 메시지는 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이 널을 리턴할 경우(예를 들어 메시지가 설정되지 않았기 때문에) 핸들러는 비어 있는 새 메시지를 작성하여 저장합니다.
메시지 구성요소는 MyHandler Bean이 제공하는 메시지를 표시합니다.
이제 JSF 응용프로그램은 데이터 오브젝트 및 프리미티브 유형을 표현할 수 있는 JavaServer 페이지를
포함할 수 있습니다.