워크플로우 이벤트
시스템은 두 가지 유형의 이벤트, 즉 등록된 플랫폼 이벤트와 워크플로우 이벤트를 사용합니다.
등록된 플랫폼 이벤트
등록된 이벤트는 비즈니스 규칙에서 생성되며 데이터베이스에 기록을 삽입할 때 이메일 알림을 보내는 등의 작업에 사용됩니다. 워크플로우 이벤트는 워크플로우 내에서만 등록되며 플랫폼의 다른 곳에서는 사용되지 않습니다. 등록된 플랫폼 이벤트는 외부 사용을 위해 워크플로우에서 트리거할 수 있지만 워크플로우 내에서 사용할 수는 없습니다.
워크플로우 이벤트
워크플로 이벤트는 이벤트 레지스트리를 사용하여 등록된 플랫폼 이벤트와는 다른 규칙을 따릅니다. 플랫폼 이벤트는 이벤트 등록 [sysevent_register] 테이블에 입력되며 플랫폼 프로세스에서 사용할 수 있습니다. 워크플로우 이벤트는 워크플로우 엔진 전용으로 트리거되며 워크플로우 컨텍스트 실행 작업을 지시하는 데만 사용됩니다. 이벤트가 워크플로우에 등록되면 워크플로우 실행 활동 [wf_executing] 테이블의 registered_events 열에 있는 현재 실행 중인 활동에 연결됩니다.
또한 워크플로 이벤트는 스크립트 포함 또는 스크립트 실행 활동과 같이 워크플로 컨텍스트에 액세스할 수 있는 모든 스크립팅 소스에서 워크플로로 브로드캐스트될 수 있습니다. 이 경우 취소와 같은 이벤트는 특정 컨텍스트에 대한 워크플로우 실행 [wf_executing] 테이블의 모든 레코드로 전달됩니다.
레지스트리에 의해서든 브로드캐스트에 의해서든 이벤트는 현재 실행 중인 활동과 연관된 활동 정의에 의해 처리됩니다. 각 활동 정의에는 처리기 집합이 함께 제공됩니다. 예를 들어 대부분의 활동에는 onExecute, onCancel 및 onUpdate 이벤트 처리기가 함께 제공됩니다. 보다 구체적인 이벤트의 예로, 승인 - 사용자 활동에는 승인 활동의 작업과 관련된 onDetermineApprovalState도 함께 제공됩니다.
여러 병렬 이벤트
단일 워크플로는 여러 이벤트 스레드를 동시에 실행할 수 있습니다(예: 워크플로에 별도의 워크플로 분기에서 겹치는 타이머가 있는 경우). 첫 번째 스레드 전에 추가 스레드가 완료되면 시스템은 추가 스레드의 이벤트 정보를 wf_command 워크플로 대기 명령 테이블에 저장합니다. 첫 번째 스레드가 완료되면 시스템은 추가 스레드에 의해 저장된 정보를 검색하고 각 스레드의 이벤트 정보를 사용하여 워크플로를 진행합니다.