Condividi tramite


WorkflowRuntime.AddService(Object) Metodo

Definizione

Aggiunge il servizio specificato al motore di runtime del flusso di lavoro.

public:
 void AddService(System::Object ^ service);
public void AddService (object service);
member this.AddService : obj -> unit
Public Sub AddService (service As Object)

Parametri

service
Object

Un oggetto che rappresenta il servizio da aggiungere.

Eccezioni

service è un riferimento null (Nothing in Visual Basic).

service è già registrato nel motore di runtime del flusso di lavoro.

-oppure- service è un servizio di base e il motore di runtime del flusso di lavoro è già in esecuzione (IsStarted è true).

Esempio

Nell'esempio di codice seguente viene illustrato come utilizzare una funzionalità WorkflowRuntime da un host del flusso di lavoro. Viene fornito un esempio di come utilizzare il metodo AddService per aggiungere una classe ExternalDataExchangeService e SqlWorkflowPersistenceService al motore di runtime del flusso di lavoro.

Questo esempio di codice fa parte dell'esempio Annullamento di un flusso di lavoro .

static void Main()
{
    string connectionString = "Initial Catalog=SqlPersistenceService;Data Source=localhost;Integrated Security=SSPI;";

    using (WorkflowRuntime workflowRuntime = new WorkflowRuntime())
    {
        ExternalDataExchangeService dataService = new ExternalDataExchangeService();
        workflowRuntime.AddService(dataService);
        dataService.AddService(expenseService);

        workflowRuntime.AddService(new SqlWorkflowPersistenceService(connectionString));
        workflowRuntime.StartRuntime();

        workflowRuntime.WorkflowCompleted += OnWorkflowCompleted;
        workflowRuntime.WorkflowTerminated += OnWorkflowTerminated;
        workflowRuntime.WorkflowIdled += OnWorkflowIdled;
        workflowRuntime.WorkflowAborted += OnWorkflowAborted;

        Type type = typeof(SampleWorkflow1);
        WorkflowInstance workflowInstance = workflowRuntime.CreateWorkflow(type);
        workflowInstance.Start();

        waitHandle.WaitOne();

        workflowRuntime.StopRuntime();
    }
}
Shared Sub Main()
    Dim connectionString As String = "Initial Catalog=SqlPersistenceService;Data Source=localhost;Integrated Security=SSPI;"
    Using workflowRuntime As New WorkflowRuntime()
        Dim dataService As New ExternalDataExchangeService()
        workflowRuntime.AddService(dataService)
        dataService.AddService(expenseService)

        workflowRuntime.AddService(New SqlWorkflowPersistenceService(connectionString))


        AddHandler workflowRuntime.WorkflowCompleted, AddressOf OnWorkflowCompleted
        AddHandler workflowRuntime.WorkflowTerminated, AddressOf OnWorkflowTerminated
        AddHandler workflowRuntime.WorkflowIdled, AddressOf OnWorkflowIdled
        AddHandler workflowRuntime.WorkflowAborted, AddressOf OnWorkflowAborted


        Dim workflowInstance As WorkflowInstance
        workflowInstance = workflowRuntime.CreateWorkflow(GetType(SampleWorkflow))
        workflowInstance.Start()

        waitHandle.WaitOne()

        workflowRuntime.StopRuntime()
    End Using
End Sub

Commenti

È possibile configurare il motore di runtime del flusso di lavoro aggiungendo servizi di base. I servizi di base sono servizi derivati da una delle classi base del servizio seguenti: WorkflowSchedulerService, WorkflowCommitWorkBatchService, WorkflowPersistenceService e TrackingService. I servizi di base possono essere aggiunti solo quando il motore di runtime del flusso di lavoro non è in esecuzione; ovvero quando IsStarted è false. WorkflowRuntime può essere utilizzato anche come un contenitore dell'archivio per altri servizi che possono essere utilizzati da altri flussi di lavoro o da applicazioni in esecuzione su un host. Se si aggiunge un servizio non di base derivato dalla classe WorkflowRuntimeService dopo l'avvio del motore di runtime del flusso di lavoro, AddService chiama il metodo Start implementato da tale servizio.

Nota

AddService applica una restrizione tale per cui non è possibile aggiungere due servizi dello stesso Type a WorkflowRuntime. Tuttavia, è possibile aggiungere più servizi che derivano dalla stessa classe di base. Può esistere solo un servizio derivato da ognuna delle classi base del servizio seguenti in WorkflowRuntime: WorkflowSchedulerService, WorkflowCommitWorkBatchService e WorkflowPersistenceService. Se si aggiungono più servizi derivati da una di queste classi, ad esempio due servizi di persistenza, StartRuntime genera un'eccezione InvalidOperationException.

Si applica a