2012-07-31 6 views
1

원하는 작업을 수행하기 위해 협업하고 정보를 교환해야하는 두 가지 워크 플로 서비스 (상태 시스템)가 있습니다.상태에 의해 지원되지 않는 워크 플로 서비스 및 작업

내가 가지고있는 문제는 (그러나 나는 단지 하나의 상태 머신 만 가지고있다.) 때때로 나는 현재 상태에 의해 허용되지 않는 연산을 보내려고 시도한다.

이 두 가지 문제가 있습니다 : 1) 나는 때문에 지금 다른 문제

을에 나는 실제 시간 제한을 "마스크"있어요) 작업이이 허용되지 않았 음을 알고 작업 제한 시간을 기다릴 필요가, 나는이 발견 가능한 솔루션 : 1) 나는 true (허용)와 false (허용되지 않음)를 반환하고 모든 상태를 모든 상태에 추가하도록 서명을 변경할 수 있습니다 (허용되지 않는 작업은 자동 전환을 트리거하지 않음). 2) 모든 상태를 항상 모든 상태에 추가합니다. (허용되지 않는 셀프 전환) 트리거하지만 허용되지 않는 전환에 대한 예외를 보낼 것입니다

어떤 옵션이 가장 좋을지 알고 싶습니다. (물론 다른 가능한 솔루션도 좋을 것입니다). 나는 try/catch 내에서 예외를 던져서 어떻게 예외에 응답 할 수 있는지 알고 싶다.

감사

+0

비동기 위임 실행 패턴을 따르지 않는 이유는 무엇입니까? StartXXX는 폴링 할 수있는 IXXXHandler 인스턴스를 반환하고 완료 될 때까지 차단합니다. 계속 진행할 준비가되었을 때 유휴 워크 플로우를 돌릴 수 있도록 코드를 작성할 수도 있습니다. – Will

답변

1

여기에 또 다른 옵션은 워크 플로 지속성 저장소의 정보를 사용하는 것입니다. 하나의 열에는 활성 책갈피가 들어 있고 Receive 활동에는 SOAP 조작입니다. 특정 워크 플로 인스턴스에 대한 정보를 노출하는 별도의 서비스를 가질 수 있습니다.

워크 플로 지속성 저장소가 즉시 업데이트되지 않기 때문에 다른 상태에있는 워크 플로에 메시지를 보낼 수 있다는 점과 같은 워크 플로 인스턴스에 메시지를 보냅니다. 여전히이 기본 기술은 실제로 잘 작동하며이 기능을 사용하여 워크 플로의 상태에 따라 UI에서 단추를 사용하거나 사용하지 않도록 설정했습니다.

+0

감사합니다. Maurice, 당신은 내가 기다리고있는 권위있는 참조입니다. 어쨌든, 지금까지 예외적으로 해봤지만이 "상태 시스템 메타 데이터 서비스"를 만들려고합니다. – fra

+0

기다리게해서 죄송합니다. 패러 글라이딩 여행에서 나는 외지였습니다 :-) – Maurice

+0

걱정 마세요. 네가 휴가를 간 것 같아. 열려있는 다른 질문에도 답변 할 수 있기를 바랍니다. (승격 된 속성은 복원되지 않습니까?) – fra

관련 문제