중지된 활동 재실행

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

장기 실행 프로세스의 활동이 엔클로징 범위에서 미발견 결함을 발견하고 연관 활동 템플리트에서 오류가 발생할 때 활동이 중지되도록 지정하는 경우, 활동이 중지 상태가 되기 때문에 복구할 수 있습니다. 활동을 재실행할 수 있습니다.

활동에서 사용한 변수를 설정할 수 있습니다. 스크립트 활동을 실행할 때 force-retry 호출에서 활동을 통해 예상하는 메시지와 같은 매개변수를 전달할 수도 있습니다.

이 타스크의 단계

  1. 중지된 활동을 나열하십시오.
    QueryResultSet result = 
          process.query("DISTINCT ACTIVITY.AIID",
                        "ACTIVITY.STATE = ACTIVITY.STATE.STATE_STOPPED AND 
                         PROCESS_INSTANCE.NAME='CustomerOrder'",
                         (String)null, (Integer)null, (TimeZone)null);

    이 조치는 CustomerOrder 프로세스 인스턴스에 대한 중지된 활동을 리턴합니다.

  2. 활동(예: 중지된 staff 활동)을 재실행하십시오.
    if (result.size() > 0)
    {
      result.first();
      AIID aiid = (AIID) result.getOID(1);
      ActivityInstanceData activity = process.getActivityInstance(aiid);
      ClientObjectWrapper input = 
            process.createMessage(aiid, activity.getOutputMessageTypeName());
      DataObject myMessage = null;
      if ( input.getObject()!= null && input.getObject() instanceof DataObject )
        {
          myMessage = (DataObject)input.getObject();
          //set the strings in your message, for example, chocolate is to be ordered
          myMessage.setString("OrderNo", "chocolate");
        }
    
       boolean continueOnError = true;
       process.forceRetry(aiid, input, continueOnError); 
    }

    이 조치를 통해 활동이 재시도됩니다. 오류가 발생하면 continueOnError 매개변수는 forceRetry 요청 처리 중 오류가 발생할 경우 해당 조치를 취할 것인지 판별합니다.

    이 예에서 continueOnError는 true입니다. 즉, forceRetry 요청 처리 중 오류가 발생한 경우 활동이 실패 상태에 놓이게 됨을 의미합니다. 이 결함은 처리되거나 프로세스 범위에 도달할 때까지 활동의 엔클로징 범위로 전달됩니다. 프로세스는 실패 중 상태가 되고 결국 실패됨 상태가 됩니다.

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

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