주로 동일한 요소로 구성된 워크 플로가 있습니다.
각 요소는 다음과 같이 정의된다 :모든 워크 플로 시퀀스가 유휴 상태 일 때 감지
단순히 시퀀스에서 이러한 소자를 적층 할 수있다 플로는,이 병렬로 실행할 수 있고, 그것을 등간에 분파 수도 - 완전한 자유를위한 워크 플로우 디자이너. 모든 것이 WCF 서비스로 호스팅되지만 가능하다면 그 정보에 의존하지 않는 것이 좋습니다.
이 모든 설정의 높은 수준의 아이디어
은 다음- 워크 플로가 시작되면, 이러한 요소를 신속, 차례로, 최대 발사 상단 조건 분기를 스킵 시작합니다. 이전 요소를 완료하면 워크 플로에 정의 된대로 다음 요소가 시작됩니다.
- 어떤 시점에서 조건
[B]
이 올 바르면 요소는 아래쪽 분기를 가져와 WCF 호출을 기다릴 수 있습니다. - 조만간 모든 요소가 이러한 종류의 중지 상태가되거나 워크 플로가 모두 종료됩니다.
내가 필요한 것은 모든 요소가 WCF 호출을 대기하기 위해 멈추는 순간을 포착하는 것입니다.
그 시점에서 워크 플로의 추가 흐름에 영향을 줄 수있는 계산을 수행해야합니다. 그러므로 나는 그 순간을 정확하게 잡아야한다.
일부 노트 :
- 나는 그 계산을하기 전에 더 WCF 호출이 올 것이라는 점을 보장합니다. 따라서 WCF 호출과 관련된 가능한 경쟁 조건이 범위를 벗어납니다.
- 제어 흐름을 제어하는 응용 프로그램이 없습니다. 즉, IIS에서 호스팅되므로 예고없이 다시 시작될 수 있으며 타이머, 장기 실행 루프, 메시지 펌프 등을 설정할 수 없습니다.
- 워크 플로 디자인을 제어하지 않습니다.
- 그러나 요소의 디자인을 완전히 제어합니다. 사실,이 요소는 실제로
NativeActivity
입니다 (다이어그램이 Visio에서 나온 이유입니다 :-) 내가 소스 코드를 제어한다는 것입니다. - 나는 또한 어느 정도 호스팅 환경을 제어한다. 즉, 워크 플로가 호스팅되는 웹 응용 프로그램을 수정할 수 있습니다.
- 전체 워크 플로는 비즈니스 개체에 "첨부"되며 모든 요소는 해당 요소에 액세스 할 수 있습니다.
주셔서 감사합니다. 하나. 'WorkflowInstanceStateRecord'라는 클래스가 보이지 않습니다. 'TrackingParticipant의 첫 번째 인수.Track' 메쏘드는'TrackingRecord'이며'State' 또는 비슷한 이름의 프로퍼티를 가지고 있지 않습니다. 또한 워크 플로 호스트로 이동하여 ID로 워크 플로 인스턴스를 가져올 수있는 서비스 위치 지정자가 표시되지 않습니다. 어떤 도움이 필요합니까? –
아, 알겠습니다! WorkflowInstanceRecord는 상태가 없습니다. 지금 발견 했어. 내가 파고있는 동안 기다려라. –
좋아, 다행히 추적 참가자와 함께 침묵의 순간을 가로 챌 수있다. 하지만 이제는 그 참가자 내부에서 관련된 비즈니스 객체에 접근 할 수 없습니다. 내 활동은 워크 플로우 확장으로 등록 된 DI 컨테이너에서 저장소를 가져옵니다. 액티비티는 'NativeActivityContext'를 통해 DI 컨테이너에 접근 할 수 있습니다. 그러나 참가자는 어떻습니까? –