문제

Windows Workflow를 사용하려고 노력하고 있으며 아래 링크의 이미지와 유사한 모델이 있습니다.
Workflow screen shot

각각의 보내기 활동 후 (GetSomthing, GetSomthingElse, GetSomeMoreStuff) 동일한 맞춤 활동을 호출합니다.LogSomthingBadHappened).

내 실제 모델 에서이 그림에서 그렇게 나쁘지 않을 수도 있지만, 사용자 정의 활동은 시퀀스 반응성이며, 노드가 상당히 많으며, 3 번 반복되면 워크 플로를 매우 추악하게 만들기 시작합니다.

나는 다음과 같은 일을하고 싶습니다 :
Edited Workflow screen shot

할 수 있습니다 IfElse 가지가 이렇게 병합됩니까?
대신 상태 기계 작업 흐름을 사용해야합니까 (아직 알아 내지 못했습니다).

도움이 되었습니까?

해결책

워크 플로에서 Faulthandler를 사용하고 핸들러가 잡을 특정 예외 유형을 던지십시오. 가장 우아하지는 않지만 효과가 있다고 생각합니다.

다른 팁

순차 워크 플로우에서 모든 단계는 특정 순서로 나타나야하며 실행 경로는 제어 구조 (경우)에 의해서만 독점적으로 조절됩니다.
귀하가 설명하는 방식으로 실행 경로를 변경하는 것은 명령 코드로 GOTO 문을 사용하는 것과 같습니다. 이는 불필요한 복잡성으로 이어집니다.

활동이 포함 된 경우 시퀀스 반응성 워크 플로의 다른 단계에서 실행해야한다는 것은 정확히 동일합니다. 맞춤 활동. 이렇게하면 단일 논리 단위에 포함되어 있기 때문에 관리하는 것이 더 쉽습니다.
명령 코드에서는 복제 된 코드의 일부를 메소드로 리팩토링 한 다음 여러 장소로 호출됩니다.

효과가있는 또 다른 대안은 당신을 넣는 것입니다 logsomthingbadhappened 사용자 지정 워크 플로우로 활동하고 여러 시간을 포함시킵니다. 조심해야 할 몇 가지 사항 : Subworkflow가 실행됩니다. 비동기 적으로, LogsomthingBadHappened 활동이 기본 워크 플로에서 상태 정보가 필요한 경우 하위 워크 플로에 복사하는 것이 어려울 수 있습니다.

나는 이것을 시도하지 않았으므로 작동하지 않을 수도 있습니다.

Gbanfill의 대답은 올바른 방향을 가리키고 있다고 생각합니다.

일반화하기 위해 문제를 다음과 같이 정의합니다.

워크 플로의 여러 장소에서 실행될 활동 그룹을 정의하는 방법이 있습니까?
추가 요구 사항은 다음과 같습니다.

  1. 활동 그룹은 XAML에서만 정의되어야합니다.
  2. 물론이 그룹에 대한 입력 유형은 고정되어 있지만 실제 값은 (함수 호출과 같은) 통화에 따라야합니다.

어쩌면이를 수행하는 방법은 하위 작업 흐름을 정의하고 하위 작업 흐름을 인스턴스화하고 계속하기 전에 완료되기를 기다리는 사용자 지정 활동을 구축하는 것입니다.

이 사용자 정의 활동에는 최소한 두 가지 매개 변수, 즉 하위 작업 흐름 ID 및 입력 매개 변수가 있어야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top