2010-12-22 4 views
7

Microsoft에서 Windows Workflow Foundation 4의 워크 플로 프레임 워크를 개정 했으므로이 새로운 프레임 워크에 대한 생각과 경험은 무엇입니까?Workflow Foundation 4에 대한 생각과 경험

내가 지금 몇 달 동안 WF4와 함께 일하고있다, 나는 몇 가지 함정에 실행 한 :

  • 워크 플로우 서비스 (Xamlx)과의 인터페이스를 적용 할 수있는 방법은 없습니다.
  • 워크 플로에서 통신, 상관 관계, 지속성 또는 처리되지 않은 예외가있는 워크 플로에 오류가 발생하면 추적 로그에서 관련이없는 정보를 알려주므로 잘못 된 사항을 알리는 것이 거의 불가능합니다. 예를 들어, 워크 플로 변수로 Entity Framework 개체가 있고 워크 플로 지속성에 문제가 발생했습니다. 불행하게도, 추적 파일의 오류가 아닌 것이 이것이 문제라는 것을 나타냅니다. 나는 무엇이 잘못되었는지 알아 내기 전에 여러 시간의 시행 착오를 겪었다.
  • 제공된 활동 중 일부가 충분하지 않습니다. 예를 들어 동적 엔드 포인트를 지원하도록 보내기 활동을 확장해야했습니다. 불행히도 완전히 동적으로 만들 수는 없었습니다. 예를 들어, 인터페이스 이름은 동적 일 수 없습니다.
  • 워크 플로가 너무 커지면 디자이너의 작업 속도가 매우 느려집니다. 크기가 100KB가 넘는 워크 플로 하나가로드하는 데 1 분 이상 걸렸습니다! 그리고이 크기의 워크 플로를 디버깅하는 것을 잊어 버리십시오.
  • 오라클에 대한 지속성 공급자가 없습니다.

함정에도 불구하고 나는 데이터베이스에 대한 지속성 기능, 디자이너에서의 활동을 쉽게 할 수 있으며 WCF 서비스를 워크 플로 서비스로 쉽게 설정할 수 있다는 점에 깊은 인상을 받았습니다.

나는 워크 플로 파운데이션을 사용하여 다른 개발자의 경험에 대해 궁금 4.

편집 :

나는 큰 흐름의 매우 느린 디자이너의 문제를 해결할 수 있었다. 외관상으로 디자이너에게 많은 스트레스를주는 해석 할 수없는 수입이 있음이 밝혀졌습니다.

I posted on the MSDN forums about this issue.

업데이트

우리가 생산 실행중인 것을 지금 AppFabric에 직면하고있는 문제의 슬루있다. AppFabric Workflow Services는 현재 사용 준비가되어 있지 않습니다. 나는 새 버전이 공개 될 때까지이 일을 멀리 할 것이다.

+1

또한 Windows 워크 플로 4.5에서 개체 개체 (Entity 프레임 워크) 변수의 지속성 문제가 있습니다. 이 지속성 문제에 대해 어떤 접근 방식을 사용했는지 알려 주실 수 있습니까? –

+1

우리의 접근 방식은 엔티티 객체를 작업 흐름 변수 또는 인수로 사용하지 않는 것이 었습니다. 우리는 항상 그것을 내부 데이터 객체로 변환했습니다. 그러나 엔티티는 변수 또는 인수로 사용할 수 있습니다. 엔티티가 분리되었는지 확인해야합니다. 나는 우리가 DB에서 일부 엔티티를 가져 왔지만 더 이상 존재하지 않는 컨텍스트에 여전히 첨부되어 있다는 것이 문제라고 생각합니다. WF persist에서 엔티티와 엔티티를 직렬화하려했으나 컨텍스트가 더 이상 존재하지 않기 때문에 질의 할 수 없습니다. 엔티티가 워크 플로로 지속되도록하려면 조심해야합니다. – Mas

+0

감사합니다. Mas. 우리는 당신과 비슷한 접근법을 따랐습니다. 우리는 Entity 프레임 워크 객체를 사용하지 않고 대신 사용자 정의 poco 객체를 사용했습니다. –

답변

4

당신은 WF4 문제에 대한 꽤 좋은 요약을했다고 생각합니다.

내 주요 요점은 프로세스 워크 플로의 정의를 변경할 수 없다는 점입니다. 그것은 다음 버전에서 수정되었지만 지금은 큰 문제입니다.

+0

프로세스 내 워크 플로우의 정의를 변경하고자하는 것을 이해할 수 있지만, 클래스 정의 중간 실행 변경과 같은 논리적 인 부조화처럼 보입니다. 나는 어떤 이유로 든해야하지만 '오래된'워크 플로우가 끝나는 동안 '새로운'정의와 병행하여 '오래된'정의를 실행하는 대답이 아닙니까? 문제에 대해 설명하는 어떤 좋은 링크가 있습니까? –

+2

워크 플로는 코드의 일부이며 버그가있을 수 있습니다. 때로는 버그를 수정하는 대신 버그를 수정해야 할 때도 있습니다. 자세한 정보는 Rin Jacobs의 WF 선물 세션을 확인하십시오. http://player.microsoftpdc.com/Session/3b87c17b-a218-40d3-984f-78adee – Maurice

3

또한 워크 플로에서 예외가 발생하여 대부분 발생 원인, 출처 및 설명이나 메시지를 확인하는 데 어려움이있었습니다. 더 많은 경험을 얻었을 때이 점에서 더 나아졌습니다. 다른 워크 플로 프로젝트를 시작하면 훨씬 더 효율적으로 디버깅 할 수 있습니다. 그것은 단지 다른 패러다임이며 따라서 직선 코드와 같은 방식으로 접근 할 수 없습니다.

WF 4.0에서 또 다른 문제는 단위 테스트 인 WorkflowInvoker입니다. 세부 사항은 나를 벗어나지 만 의존성과 부모/자식 워크 플로를 조롱하는 것은 정말 골치 거리였습니다.

일반적으로 나는 3.5보다 큰 개선 된 WF 4.0을 정말로 좋아합니다.디버그 모드에서 실행하는 것은 매우 느릴 수 있습니다. 디자이너에서 디버깅하는 것이 더 가치가있는 문제이지만, 프레임 워크는 훌륭하고 매우 유용합니다.

관련 문제