2009-12-06 4 views
1

워크 플로 인스턴스가 WorkfloRuntime의 WorkflowCompleted 이벤트를 구독하는 것 이외의 다른 작업과 일치하는지 여부를 호스트에서 어떻게 확인할 수 있습니까? 주어진 WorflowInstance가 완료되었는지를 확인할 수있는 플래그 또는 상태가 있습니까?WF : 워크 플로가 완료되었는지 확인

@ 편집 : 질문은 순차적 인 워크 플로에 관한 것입니다.

답변

0

대답은 (적어도 알게 된 것부터 알 수 있습니다.) 인스턴스가 완료되었는지 여부를 나타내는 지정된 인스턴스에 대해 검색 할 수있는 WorkflowInstance와 관련된 플래그가 없다는 것입니다. 사용할 수

두 가지 방법은 다음과 같습니다

  1. WorkflowRuntime.WorkflowCompleted Event

  2. 워크 플로 인스턴스가 완료되었는지 destermine하는 로그를 워크 플로 실행의 '로그인'을 유지하기 위해 TrackingService 서비스를 사용하고 quering . good introductory article입니다. 이 접근 방식을 사용하면 TrackingService를 즉시 사용할 수있는 유일한 구현은 SqlTrackingService이며 SQL Server 데이터베이스가 필요합니다. 그런 다음 '로그인'쿼리 SqlTrackingQuery을 사용할 수 있습니다

참고 : SqlTrackingService의 행동의 흥미로운 측면은 immediatly이가 런타임에서받은 메시지를 작성하지 기본에 의한 것입니다 트랜잭션이 끝날 때만 데이터베이스에 저장됩니다. 이 동작은 SqlTrackingService IsTransactional 속성에 의해 제어됩니다.

1

TrackingServices을 확인하여 워크 플로 인스턴스의 현재 상태를 확인할 수 있습니다.

일부 코드 단편은 .NET 3.0 State Machines In Windows Workflow입니다.

+0

도움 주셔서 감사합니다. 내가 'completness'체크는 TrackingService를 사용하여 구현 될 수 있지만,이 목적을 위해 사용되는 것은 이벤트 접근 방식보다 약간 성가신 것처럼 보입니다. 그리고 두 가지 접근법은 사전에 구독해야한다는 점에서 비슷합니다. 임의의 워크 플로 인스턴스를 잡고 그 상태를 얻을 수는 없습니다. 그러나 그것이 작동하고 WWF가 이런 방식으로 설계 되었다면 문제가되어서는 안됩니다. 왜 단지 WorkfloInstance 자체에 정보가 거의 없는지 궁금 해서요. 이유가 있어야합니다. – axk

+0

또 다른 옵션은'WorkflowInstance.GetWorkflowDefinition()'과 결합 된'System.Workflow.Activities.StateMachineWorkflowInstance'를 사용하여'smwi. CurrentState'는 최종 상태입니다. –

관련 문제