Condividi tramite


Messaggistica in ingresso

 

Pubblicato: maggio 2016

Progettazione flussi di lavoro 1.0 consente ai flussi di lavoro di eseguire una sottoscrizione per i messaggi e di riceverli sia per la creazione di nuove istanze sia per la correlazione a istanze esistenti.Si tratta di messaggi negoziati unidirezionali per i quali è necessario specificare un filtro come parte della sottoscrizione allo scopo di determinare la corrispondenza dei messaggi in ingresso recapitati all'ambito corrispondente, ossia quello in cui è ospitato il flusso di lavoro.

Messaggistica in ingresso

Le definizioni di flusso di lavoro possono definire una proprietà ActivationFilter.Questo filtro viene usato per determinare se è necessario creare una nuova istanza del flusso di lavoro quando viene pubblicato un messaggio nell'ambito.Un'istanza di flusso di lavoro in esecuzione può inoltre definire filtri mediante le attività Subscribe e ReceiveNotification.Per altre informazioni sulle attività Subscribe e ReceiveNotification in Progettazione flussi di lavoro 1.0, vedere 2af7983b-8357-4e0f-9ba9-dfdeed05a8a7#BKMK_PubSubActivities.

I messaggi vengono pubblicati nell'ambito mediante l'endpoint delle notifiche o l'API client .NET (WorkflowInstanceManager).Un messaggio di notifica è costituito da due parti:

  • Properties: un elenco semplice di coppie chiave-valore che è possibile usare a scopo di filtro.

  • Content: il contenuto del messaggio.È necessario specificare un tipo Dictionary<string, object> per eseguire il mapping alle istanze di InArgument della definizione del flusso di lavoro o alla proprietà Content di ReceiveNotification (ReceiveParametersContent).Nel frammento di codice seguente viene illustrato come pubblicare un messaggio in un ambito.

    // Create the WorkflowInstanceManager 
    WorkflowInstanceManager wim = new WorkflowInstanceManager(new Uri(RootScope + ScopeName)); 
    // Publish New Order message 
    wim.PublishNotification(new WorkflowNotification() 
    { 
        Properties = 
        { 
            { "EventName", "New Order" } 
        }, 
        Content = new Dictionary() 
        { 
            { "OrderId", Int32.Parse(orderid) }, 
            { "Cost", Double.Parse(ordercost) } 
        } 
    });
    

Nota

In Progettazione flussi di lavoro 1.0 non è attualmente supportata la messaggistica SOAP diretta, incluse le comunicazioni bidirezionali (richiesta-risposta).