이벤트 핸들

전체 비즈니스 프로세스 및 각 영역은 연관된 이벤트가 발생되는 경우 호출되는 이벤트 핸들러와 연관될 수 있습니다. 프로세스가 이벤트 핸들러를 사용하여 웹 서비스 조작을 제공한다는 점에서 이벤트 핸들러는 receive 활동 또는 pick 활동과 유사합니다.

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

해당 범위가 실행 중인 한 이벤트 핸들러를 계속 호출할 수 있습니다. 또한 이벤트 핸들러의 다중 인스턴스는 동시에 활성화될 수 있습니다.

다음 코드 스니펫은 주어진 프로세스 인스턴스용 활성 이벤트 핸들러를 가져오는 방법과 입력 메시지를 전송하는 방법을 보여줍니다.

이 타스크의 단계

  1. 프로세스 인스턴스 ID의 데이터를 판별하고 프로세스의 활성 이벤트 핸들러를 나열하십시오.
    ProcessInstanceData processInstance =
           process.getProcessInstance( "CustomerOrder2711");
    EventHandlerTemplateData[] events = process.getActiveEventHandlers(
                                          processInstance.getID() );
  2. 입력 메시지를 전송하십시오.

    이 예에서는 첫 번째 발견된 이벤트 핸들러를 사용합니다.

    EventHandlerTemplateData event = null;
    if ( events.length > 0 )
    {
        event = events[0];
    
        // create a message for the service to be called
        ClientObjectWrapper input = process.createMessage(
        event.getID(), event.getInputMessageTypeName());
                 
        if (input.getObject() != null && input.getObject() instanceof DataObject )
        {
          	DataObject inputMessage = (DataObject)input.getObject();
           // set content of the message, for example, a customer name, order number                              
           inputMessage.setString("CustomerName", "Smith");
           inputMessage.setString("OrderNo", "2711");
         
    	       // send the message
           process.sendMessage( event.getProcessTemplateName(),
                                event.getPortTypeNamespace(),
                                event.getPortTypeName(),
                                event.getOperationName(),
    				 input );
         }
     }

    이 조치를 실행하면 지정된 메시지가 프로세스의 활성 이벤트 핸들러에 전송됩니다.


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