2009-07-06 4 views
0

상태 나이에 따라 상태를 변경해야하는 특정 상태가 필요한 Windows Workflow Foundation (3.0) 상태 시스템이 있습니다. 예를 들어, 작업 흐름이 상태 X로 들어가면 사용자는 5 일 이내에 작업 흐름을 수행해야합니다. 이 작업이 완료되지 않은 경우 작업 흐름을 상태 Y로 전환해야합니다. 그래서 내가 원하는 것은 사용자의 작업을 처리하는 EventDriven 활동이있는 상태와 SetState 활동이있는 지연 활동이있는 Sequence 활동입니다. 사용자가 제 시간에 조치를 취하지 않은 경우 상태 전이를 유발합니다.시퀀스를 Windows 작업 흐름 statemachine으로 가져 오는 방법은 무엇입니까?

States는 시퀀스 활동을 직접 받아들이지 않으므로이 논리를 StateInitialization 활동에 넣으려고했지만 지연을 허용하지 않습니다. 나는 이전 상태와 다른 EventDriven 활동에 지연을 넣을 수 있었으며 그 다음에 어느 상태로든 전환 할 수 있었지만 실제로는 비즈니스 흐름에 맞지 않습니다.

State Machine에서이 작업을 수행 할 수있는 방법이 있습니까? 아니면 순차 작업 흐름을 사용해야합니까?

답변

1

상태 시스템 워크 플로를 사용하면 쉽게이를 수행 할 수 있습니다.

상태에 StateInitializationActivity 및 EventDrivenActivity를 넣어야합니다. EventDrivenActivity는 지연 활동을 받아들이고, 거기에 시간 초과 후 로직을 배치합니다 (예 : 다른 상태로 설정). 타이머가 StateInitializationActivity 내의 활동보다 일찍 경과하면 상태가 변경됩니다.

+0

감사합니다. 나는이 동일한 해결책을 여기에서 찾아 냈다 http://www.imason.com/blogs/jim_schwartz/archive/2008/12/15/repeating-a-state-machine-activity-indefinitely.aspx 그리고 그것은 작동한다 (그래서 나는 그것) 그러나 EventDrivenActivity를 몰고있는 사건은 무엇입니까? 나머지 애플 리케이션에서는 웹 페이지에서 이벤트를 시작합니다. 이러한 이벤트는 현재 상태의 관련 활동에 의해 처리됩니다. –

+1

EventDrivenActivity를 트리거하는 이벤트는 만료 된 지연 시간입니다. EventDrivenActivity에서 HandleExternalEventActivity, DelayActivity 또는 WF 3.5 ReceiveActivity와 같은 IEventActivity를 구현하는 하나의 활동을 넣을 수 있습니다. –

관련 문제