2017-02-03 1 views
1

워크 플로에서 지연 작업을 사용하는 WF4.5 서비스가 개발 중입니다. 워크 플로는 AppFabric (Visual Studio에서 로컬로 테스트)에서 호스팅됩니다. 내 web.config 서비스에서 설치 및 AppFabric 사용자 지정 구성을 사용하도록 설정되어 있습니다.Windows Workflow 4.5 지연 작업 지속되지 않음

WorkflowDelayActivity

점은 이미지에서 얻을 수있는 지연 (통신 확인) 전에 활동이 실행 않으며, 나는 그것의 입증 증거를 가지고있다 : 여기에 워크 플로와 관계있는 부분의 이미지입니다. 나는 또한 지연 활동 후에 UpdateRejectionInfo가 실행되지 않는다는 것을 안다. (워크 플로우를 실행하는 동안 커스텀 액티비티의 중단 점으로 확인된다.)

나는 DetermineCommunication 활동과 지연 활동 사이에 지속적 활동을 추가하려고 시도했으며, 실제로보고있는 데이터베이스에 저장하므로 실제로 데이터베이스에 쓰기 권한이 있음을 알고 있습니다.

<behaviors> 
    <serviceBehaviors> 
    <behavior> 
     <sqlWorkflowInstanceStore 
     connectionString="SERVER=hq-sql02\oculusdev;Database=EAA;Trusted_Connection=yes" 
     hostLockRenewalPeriod="00:00:30" 
     runnableInstancesDetectionPeriod="00:00:30" 
     instanceCompletionAction="DeleteNothing" 
     instanceLockedExceptionAction="AggressiveRetry" 
     instanceEncodingOption="GZip"/> 
     <workflowIdle timeToPersist="00:00:20" timeToUnload="00:00:30"/> 
     <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" /> 
     <serviceDebug includeExceptionDetailInFaults="true" /> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 

하는 것이 도움이 모든 종류의 놀라운 것 : 여기

도 서비스에 대한 Web.config의 행동 섹션입니다.

답변

2

괜찮습니다. 그래서이 질문에 대한 대답은 연기 활동을 훨씬 넘어서서 제가 사용하고있는 다른 기술로 들어가기도합니다.

TL : 지연 성 해제를 사용하지 않도록 엔티티 프레임 워크 개체를 설정하지 않았습니다. 따라서 데이터를 serialize하는 동안 예외가 발생하여 본 적이 없으며 워크 플로가 중단됩니다.

긴 버전 : 데이터를 데이터베이스에 유지하면 프로그램은 워크 플로 범위에있는 모든 개체를 직렬화하려고 시도합니다. 이것은 표준 C# 객체에서는 일반적이지만 복잡한 객체가되면 직렬화가 더욱 복잡해집니다.

기술 용이성을 위해 데이터베이스 엔터티를 전달하고 저장하는 데 Entity Framework (데이터베이스 우선)를 사용하고 있습니다. Entity Framework 엔터티가 serialize되면 사용할 수있는 모든 정보를 얻으려고합니다. Well Entity Framework는 데이터를 게으르게로드하는 개념을 가지고 있으므로 데이터베이스에서 엔티티를 가져 와서 계층을 더 깊게 만들려고하면 (예 : 외래 키 관계를 통해) 해당 정보에 대해 데이터베이스를 쿼리합니다 . 엔터티를 데이터베이스에서 가져 오는 일반적인 방법은 엔터티를 가져온 다음 블록을 사용하여 단기간에 데이터베이스 연결을 끊는 것입니다.

블록을 사용하여 단기간 사용 (싱글 톤 엔티티라고 부르는 것)을 결정하고 지연로드를 해제하지 않으면 프로그램에서 엔티티를 직렬화하려고하면 모든 요청이 시작됩니다 초기 요청시 잡히지 않은 추가 데이터 그리고 그 블록을 사용하여 종료 된 경우 데이터베이스 연결을 사용할 수 없으며 예외가 발생합니다.

나는 내장 된 활동이 던지고있는 예외를 포착하지 못했으며, 실제로 실패했을 때처럼 보이지 않았다.

관련 문제