문제

와 연관되다 이 질문.

나는 다음을 사용하여 워크플로 버전 관리를 구현하는 방법을 이해합니다. WorkflowApplication.이전 버전의 워크플로에 대한 원본 XAML 정의를 유지하는 경우 오른쪽을 사용하여 로드할 수 있습니다. WorkflowApplication 건설자.

어떻게 그걸 보장할 수 있었나요? WorkflowServiceHost IIS에서 워크플로를 호스팅하려는 경우 올바른 워크플로 정의를 사용합니까?

이있다 WorkflowServiceHost 워크플로 정의를 로드하는 데 사용할 수 있지만 XAMLX 파일을 통해 IIS 내부에서 호스팅하는 경우 생성자를 호출하지 않습니다. WorkflowServiceHost 이 문제는 IIS에서 어떻게든 처리됩니다.그렇다면 내 워크플로의 올바른 버전에 대해 올바른 워크플로 정의가 로드되도록 하려면 어떻게 해야 합니까?

도움이 되었습니까?

해결책

WorkflowServiceHost를 사용하는 접근 방식은 WorkflowApplication을 사용하는 방식과 크게 다르지 않습니다.다양한 XAML(X) 버전을 유지하는 기본 사항이 여전히 적용됩니다.따라서 WorkflowServiceHost의 경우 각각 다른 버전의 XAMLX를 호스팅하는 여러 WorkflowServiceHost를 만들어야 합니다.각각 다른 끝점이 있습니다.따라서 기본적으로 en 엔드포인트는 워크플로 서비스와 해당 버전을 모두 처리합니다.

그렇다면 클라이언트에서 올바른 WorkflowServiceHost로 메시지를 가져오는 방법은 무엇입니까?여기서는 WCF 라우팅 서비스가 여러분의 친구입니다.클라이언트가 WorkflowServiceHost와 직접 통신하는 대신 중간 WCF 라우팅 서비스를 사용합니다.그러면 메시지가 확인되어 적절한 XAMLX 파일을 호스팅하는 WorkflowServiceHost로 라우팅됩니다.그렇다면 어떻게 알 수 있습니까?그렇게 하는 방법에는 여러 가지가 있습니다.예를 들어 새 워크플로에 대한 요청이 항상 마지막 버전으로 이동하는 메시지 상관 식별자를 사용하여 데이터베이스 조회를 수행합니다.가장 쉬운 방법은 워크플로 서비스가 초기 요청의 일부로 버전 번호를 반환하고 이를 각 후속 요청의 필수 부분으로 만드는 것입니다.이런 방식으로 WCF 라우팅 서비스는 메시지 데이터 전송만으로 모든 작업을 수행할 수 있습니다.

이에 대한 예는 다음과 같습니다.

  1. 클라이언트는 주문 ID 7을 사용하여 새 워크플로를 시작하는 메시지를 보내고 버전 3을 다시 받습니다.클라이언트 애플리케이션은 URL httl://localhost/MyWorkflow.xaml을 사용하고 라우팅 서비스는 마지막 버전인 httl://localhost/MyWorkflow.v3.xamlx로 전달됩니다.
  2. 워크플로로 보내는 다음 메시지에는 orderid와 버전 3이 모두 포함됩니다.클라이언트 애플리케이션은 URL httl://localhost/MyWorkflow.xaml을 사용하고 라우팅 서비스는 표시된 버전인 httl://localhost/MyWorkflow.v3.xamlx로 전달합니다.
  3. 클라이언트 앱이 이전 워크플로에 메시지를 보내려고 합니다.주문 ID 2와 버전 1을 사용합니다(이 워크플로가 시작될 때 응답됨).클라이언트 응용 프로그램은 URL httl://localhost/MyWorkflow.xaml을 사용하고 라우팅 서비스는 표시된 버전인 httl://localhost/MyWorkflow.v1.xamlx로 전달합니다.

확인하다 이것들 WCF 라우팅 서비스에 대한 자세한 내용은 스크린캐스트를 참조하세요.

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