비고유 시작 서비스를 포함하는 마이크로플로우 실행

마이크로플로우는 receive 활동 또는 pick 활동으로 시작됩니다. 마이크로플로우서 여러 onMessage 정의를 갖는 pick 확동으로 시작할 경우 시작 서비스는 고유하지 않습니다.

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

마이크로플로우가 요청-응답 조작을 구현하는 경우, 즉, 프로세스에 응답이 포함된 경우, 호출 메소드를 사용하여 호출에서 시작 서비스의 ID를 전달하는 프로세스를 실행할 수 있습니다.

마이크로플로우가 단방향 조작이면 sendMessage 메소드를 사용하여 프로세스를 실행하십시오. 이 예에서는 이 메소드를 다루지 않습니다.

이 타스크의 단계

  1. 옵션: 프로세스 템플리트를 나열하여 실행하려는 프로세스 이름을 찾으십시오.

    프로세스의 이름을 이미 아는 경우 이 단계는 선택사항입니다.

    ProcessTemplateData[] processTemplates = process.queryProcessTemplates
    ("PROCESS_TEMPLATE.EXECUTION_MODE =
           PROCESS_TEMPLATE.EXECUTION_MODE.EXCECUTION_MODE_MICROFLOW",
     "PROCESS_TEMPLATE.NAME",
      new Integer(50),
      (TimeZone)null);

    결과는 이름별로 정렬됩니다. 조회는 마이크로플로우로 시작할 수 있는 처음 50개의 정렬된 템플리트를 포함하는 배열을 리턴합니다.

  2. 호출할 시작 서비스를 판별하십시오.

    이 예에서는 첫 번째 발견된 템플리트를 사용합니다.

    ProcessTemplateData template = processTemplates[0];
    ActivityServiceTemplateData[] startActivities = 
            process.getStartActivities(template.getID());
  3. 해당 유형의 입력 메시지로 프로세스를 시작하십시오.

    메시지를 작성하는 경우 메시지 유형 이름을 지정하여 메시지 정의가 포함되도록 해야 합니다.

    ActivityServiceTemplateData activity = startActivities[0];
    //create a message for the service to be called
    ClientObjectWrapper input = 
          process.createMessage(activity.getServiceTemplateID(),
                                activity.getActivityTemplateID(),
                                activity.getInputMessageTypeName());
    DataObject myMessage = null;
    if ( input.getObject()!= null && input.getObject() instanceof DataObject )
    {
      myMessage = (DataObject)input.getObject();
      //set the strings in the message, for example, a customer name
      myMessage.setString("CustomerName", "Smith");
    }
    //run the process
    ClientObjectWrapper output = process.call(activity.getServiceTemplateID(),
                                              activity.getActivityTemplateID(),
                                              input); 
    //check the output of the process, for example, an order number 
    DataObject myOutput = null;
    if ( output.getObject() != null && output.getObject() instanceof DataObject )
    {
      myOutput  = (DataObject)output.getObject();
      int order = myOutput.getInt("OrderNo");
    }

    이 조치를 통해 프로세스 템플리트의 인스턴스인 CustomerTemplate가 작성되고 일부 고객 데이터가 전달됩니다. 프로세스가 완료된 경우에만 조작이 리턴됩니다. 프로세스 OrderNo의 결과가 호출자에게 리턴됩니다.

관련 개념
비즈니스 프로세스 및 타스크 관련 오브젝트에 대한 조회

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