2010-02-22 6 views
1

현재 Windows WF에서 순차 워크 플로를 사용하고 있지만 기능을 공유해야하는 여러 워크 플로가 있으므로이 프로세스를 분리해야합니다. 기본적으로 WF에서 맞춤 코드 활동을 만드는 방법이 있지만 기본적으로이를 수행 할 것이라고 생각합니다.하지만 결국 내 계획은 무국적자를 위해 WF를 파기하는 것입니다. 그러므로 저는 지금 커스텀 액티비티를 코딩하는 법을 배우는 데 시간을 보내고 싶지 않습니다.다른 워크 플로 내에서 워크 플로 실행

내가 생각할 수있는 유일한 방법은 모든 "공유"동작을 포함하는 새 WF 프로젝트를 만든 다음이를 필요로하는 워크 플로 내에서 시작하는 것입니다. 나는 이것이 어떻게 진행되는지를보기 위해 지금 작업하고있다. 그러나 이것이 단지 나쁜 생각인지 누군가에게 말해 줄 수 있는가?

편집 - 하나 "문제는"나는 지금 내가 제대로 WF RT 처분하는 경우에도, 내가 전에 대규모 메모리 누수를 경험 한 나는이의 WF 런타임을위한 싱글을 사용하는 것입니다 참조하십시오. 워크 플로의 초기 호출자에서 모든 WF 인스턴스를 추적하므로 이벤트를 제대로 처리하기 위해이 WF 인스턴스 목록을 워크 플로에 전달해야하므로 내부적으로 시작하는 WF를 추가 할 수 있습니다. 비록 내가 확실히 이런 방식으로 시도 할 수는 있지만, 조금 나쁘다. Pause/Abort/Resume 기능을 사용하기 위해 이것을 사용하려고하기 때문에 WF 인스턴스를 추적합니다. 사용자가 GUI에서 해당 버튼을 클릭하면 모든 WF 인스턴스를 반복하고 일치하는 메서드를 호출합니다.

답변

1

워크 플로를 별도의 파트로 분할 할 때 가장 큰 문제점은 완전히 연결이 끊어져 있다는 것입니다. 즉, 기본 워크 플로는 하위 워크 플로가 완료 될 때까지 기다리지 않습니다. 이 작업을 수행 할 수 있지만 일부 작업이 필요합니다.

또 하나의 점은 오류 처리입니다. 하위 작업 흐름에 오류가 발생하면 기본 작업 흐름은이를 인식하지 못하며 하위 작업을 추가하는 것과는 완전히 다른 동작을합니다.

로직을 다시 사용해야하는 경우 디자이너를 사용하여 복합 활동을 만들 수도 있습니다. 이는 워크 플로 개발과 매우 유사하며 필요에 따라 이러한 작업을 여러 워크 플로에서 다시 사용할 수 있습니다.

+0

고마워, 모리스, 내가 너의 제안을 살펴 보겠다. 그러나 악마의 지지자를 만나는 이유는 기본 워크 플로가 하위 워크 플로가 완료 될 때까지 기다리지 않는 이유는 무엇입니까? 자식 워크 플로 인스턴스를 시작하는 주 WF 코드 활동이 있지만 코드 활동 블록을 만들려면 AutoResetEvent 사용하고 있습니다. 하위 워크 플로가 완료 될 때까지만 (그리고 WorkflowCompleted 핸들러에 이벤트를 설정하는 경우) 메인 워크 플로가 계속됩니다. 현재 오류 처리에 관해서 찢어지고 있습니다. try/catch 나 FaultHandlers를 사용해야합니까? – Dave

+0

이 기사를 다시 읽어야 할 것으로 생각됩니다. http://msdn.microsoft.com/en-us/magazine/dd419656.aspx – Dave

+0

Maurice, 워크 플로 - 워크 플로 내 접근 방식을 성공적으로 구현 한 후, 암시. 나는 다른 워크 플로우에 드롭 할 수있는 커스텀 액티비티를 만드는 것이 얼마나 쉽고 논리적인지를 매우 기대하게되었습니다. 내 유일한 질문은 이제 워크 플로에 전달 된 매개 변수를 사용자 지정 활동으로 가져 오는 메커니즘은 무엇입니까? 액티비티는 워크 플로 내부에 있으므로 워크 플로 매개 변수에 액세스 할 수 있지만 아직 답변을 찾지 못했을 것으로 예상됩니다. ** 편집 ** 좋아, 나는 주위를 찌르고 그냥 디자이너의 속성 창에서 그들을 보았다! – Dave

관련 문제