JSF 응용프로그램에 메시지 구성요소 추가

JSF(JavaServer Faces) 응용프로그램에서 데이터 오브젝트 및 프리미티브 유형을 표현하려면 Business Process Choreographer 탐색기 메시지 구성요소를 사용하십시오.

이 타스크의 수행 목적 및 시기

메시지 유형이 프리미티브 유형일 경우 레이블 및 입력 필드가 표현됩니다. 메시지 유형이 데이터 오브젝트일 경우 구성요소는 이 오브젝트를 트래버스하여 오브젝트 내에 요소를 표현합니다.

이 타스크의 단계

  1. 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의 특성에 의해 제공됩니다.

  2. 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>
  3. 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은 getInputMessagegetOutputMessage 메소드를 제공합니다. 이들 메소드는 둘 다 MessageWrapper 오브젝트를 리턴합니다. 이들 메소드는 참조된 타스크 인스턴스 Bean으로 호출을 위임합니다. 타스크 인스턴스 Bean이 널을 리턴할 경우(예를 들어 메시지가 설정되지 않았기 때문에) 핸들러는 비어 있는 새 메시지를 작성하여 저장합니다. 메시지 구성요소는 MyHandler Bean이 제공하는 메시지를 표시합니다.

결과

이제 JSF 응용프로그램은 데이터 오브젝트 및 프리미티브 유형을 표현할 수 있는 JavaServer 페이지를 포함할 수 있습니다.

ⓒ Copyright IBM Corporation 2005, 2006.
이 Information Center는 Eclipse 기술을 기반으로 합니다. (http://www.eclipse.org)