0

ASP.NET MVC 5 앱에서 영구 워크 플로우 인스턴스를 사용하려면 어떻게해야합니까? (ViewBag에 액세스하거나 View 또는 AJAXing을 선택하는 것과 같은 것들이 떠오른다.)Workflow Foundation 4.5의 지속성

Notes :두 권의 책 (작동하지 않는 코드 샘플로 인한 오류로 가득 차서 일부 장 이후에 포기)과 온라인 자료 (블로그 게시물 등)가 12 개 시도되었지만 나는이 WF 것을 얻었다. 물론 지속성을 사용하지 않으면 훨씬 쉽습니다. 하지만 그게 무슨 소용이 있니?

그래서 나는 필수적인 부분이나 전체 그림을 놓치고 있다고 생각합니다.

답변

0

우리는 MVC 응용 프로그램이 말하는 WCF 끝점/계약을 제공하는 워크 플로 서비스를 구축했습니다. 거의 모든 서비스 계약은 특정 MVC 위젯에 매핑되었습니다. 내가 위젯이라고 말할 때 특정 상태의 상태 머신에서 특정 서비스 작업을 사용할 수있을 때만 볼 수있는 일부 형태의 부분 뷰를 의미합니다.

e.e. "수락"서비스/위젯은 제출 된 상태의 프로세스에서만 사용할 수 있습니다. 프로세스는 장기 실행을 위해 만들어 졌으므로 타이머와 함께 사용 된 지속성을 의미합니다. 그러나 IIS를 사용하여 AppFabric 통합을 사용해야하는 모든 것이있었습니다.

그게 전부입니다. 문제는 워크 플로의 상태를 감지하는 방법과 다른 상태로 전환을 가져 오는 방법을 알려주고 UI에서 사용 가능한 위젯을 지정하는 것입니다.

그 목적을 위해 사용자 지정 논리를 작성해야했습니다.

지속성을 위해 생성 된 기본 테이블에서 워크 플로우가 지속되면 북마크에 대한 정보를 찾을 수 있습니다. 서비스 콜이 상태 전이를 유발할 수 있다면, 북마크는 서비스/연산 이름을 갖는다.

그래서 우리는 지속성 테이블을 검색하고 특정 워크 플로우 인스턴스의 MVC 앱에 책갈피 목록을 반환하는 사용자 정의 프로빙 서비스를 구축했습니다.

이를 기반으로 MVC 앱은 사용 가능한 위젯을 렌더링합니다.

일단 위젯이 사용되면 서비스 호출이 워크 플로우 서비스로 변경되고 상태가 변경되고 인스턴스가 지속되며 새 책갈피가 지속성 테이블에 저장되며이를 기반으로 UI가 새로 고쳐집니다.

전적으로 사용자 정의되었지만 수동 테이블 스캔없이이를 수행하는 방법에 대한 적절한 대답을 찾을 수 없었습니다.