2010-12-13 6 views
5

Ho un flusso di lavoro WF4 con più funzioni di ricezione.Più attività di ricezione in WF4 non riesce quando è abilitata la persistenza

Il flusso di lavoro funziona bene finché non aggiungo la persistenza. Ho creato le tabelle di persistenza e aggiunto il testo seguente configurazione \ \ system.serviceModel \ comportamenti sezione \ serviceBehaviors del mio web.config:

<behavior> 
     <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment --> 
     <serviceMetadata httpGetEnabled="true" /> 
     <!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information --> 
     <serviceDebug includeExceptionDetailInFaults="true" /> 
     <sqlWorkflowInstanceStore connectionStringName="InstanceStore" 
     instanceCompletionAction="DeleteAll" 
     instanceLockedExceptionAction= "NoRetry" 
     instanceEncodingOption="None" 
     hostLockRenewalPeriod="00:01:00" 
     /> 
    </behavior> 

Il flusso di lavoro accetta un parametro che è un'istanza di un WorkflowInstanceDTO POCO ho definito.

Quando eseguo il flusso di lavoro con il seguente codice

var wfi = new WFService.WorkflowInstanceDTO() 
    { 
     Id = 1, 
     InstanceId = new Guid(), 
     Description = "Awesome WFI", 
     WorkflowId = 1 
    }; 
    proxy.Create(wfi); 

Non riesce sulla linea proxy.Create con il seguente errore.

Una chiave di valore '11e5cf14-c2a8-0fbf-d3b5-c12a91c174ff' esempio esiste già. Ciò potrebbe essere dovuto al fatto che sono presenti più valori MessageQuerySet che valutano lo stesso CorrelationKey.

Quando la persistenza non è abilitata, non ottengo questo errore. Qualcuno ha visto questo? Che cosa sto facendo di sbagliato?

risposta

1

Inizializza la correlazione e le tue attività di ricezione sono correlate alla stessa chiave? Volete leggere la correlazione basata sul contenuto se non l'avete già fatto.

Aggiungere una variabile del flusso di lavoro denominata "sharedHandle" di tipo CorrelationHandle e sulla chiamata Create, inizializzare "sharedHandle" con un "inizializzatore della correlazione delle query". La proprietà avrebbe qualcosa che riceverebbe tutte le chiamate avrebbe accettato come argomento.

Problemi correlati