런타임 정보

몇 가지 애플리케이션 관련 작업(경로 지정 및 종료 프로세스 활동 등 워크플로우 엔진 전용의 작업과는 대조적)을 수행하는 활동의 경우 엔진과 애플리케이션 코드 간의 명확한 트랜잭션 경계가 필요합니다. 이러한 경계는 워크플로우 엔진과 애플리케이션 간의 비동기 호출에도 유용합니다. 예를 들어 사용자는 컨트롤이 사용자 인터페이스로 리턴되기 전에 워크플로우가 다음 활동으로 상태 전이될 때까지 기다리지 않아도 됩니다.

이를 위해 워크플로우 활동에는 세 가지 함수 즉, start(), execute()complete()가 제공됩니다. 워크플로우 프로세스 인스턴스에서 활동을 완료한 후에는 워크플로우 엔진이 함수를 호출하여 프로세스를 계속합니다. 이 함수는 해당 활동에서 발신 상태 전이를 평가하여 활동을 계속할지 여부를 결정합니다.

각 활동이 계속될 경우 해당하는 start() 함수가 호출됩니다. 그런 다음 해당 활동에 대한 적절한 활동 인스턴스 데이터가 설정됩니다. JMS(Java EE의 일부인 Java Message Service API) 메시징이 필요하지 않은 활동이 곧바로 실행될 경우에는(애플리케이션 관련 작업이 없으므로 경로 지정 활동이 항상 실행됨) execute() 메소드가 호출됩니다. 그렇지 않으면 지정된 활동(예: 자동 활동)을 실행하도록 JMS 메시지가 전송됩니다. 워크플로우 메시지 핸들러는 메시지에 지정된 프로세스와 활동을 확인하여 해당 활동에 대한 execute() 함수를 호출합니다.

활동에 지정된 작업을 수행하는 애플리케이션 코드를 호출한 후에는 활동을 완료하기 위해 다른 메시지가 전송됩니다. 다시 한번 워크플로우 메시지 핸들러는 메시지에 지정된 프로세스와 활동을 확인하여 해당 활동에 대한 complete 함수를 호출합니다. 활동을 완료로 표시한 후에는 프로세스를 계속하는 함수가 다시 호출되어 완료된 활동에서 진행할 상태 전이 세트를 확인하고 프로세스를 다시 시작합니다.