WorkflowRuntime.AddService(Object) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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).
WorkflowRuntime viene eliminato.
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.