WorkflowRuntime.AddService(Object) Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Ajoute le service spécifié au moteur d'exécution de workflow.
public:
void AddService(System::Object ^ service);
public void AddService (object service);
member this.AddService : obj -> unit
Public Sub AddService (service As Object)
Paramètres
- service
- Object
Objet représentant l'instance de service à ajouter.
Exceptions
service
est une référence Null (Nothing
en Visual Basic).
WorkflowRuntime est supprimé.
service
est déjà enregistré auprès du moteur d'exécution de workflow.
- ou -
service
est un service principal et le moteur d'exécution de flux de travail est déjà en cours d'exécution (IsStarted esttrue
).
Exemples
L'exemple de code suivant montre comment utiliser les fonctionnalités WorkflowRuntime d'un hôte de workflow. Il fournit un exemple d'utilisation de la méthode AddService pour ajouter des objets ExternalDataExchangeService et SqlWorkflowPersistenceService au moteur d'exécution de workflow.
Cet exemple de code fait partie de l’exemple d’annulation d’un flux de travail .
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
Remarques
Vous pouvez configurer le moteur d'exécution de workflow en ajoutant des services principaux. Les services principaux sont ceux qui dérivent de chacune des classes de service de base suivantes : WorkflowSchedulerService, WorkflowCommitWorkBatchService, WorkflowPersistenceService et TrackingService. Les services principaux ne peuvent être ajoutés que lorsque le moteur d’exécution du flux de travail n’est pas en cours d’exécution ; autrement dit, quand IsStarted c’est false
. L'objet WorkflowRuntime peut également être utilisé comme conteneur de stockage pour d'autres services qui peuvent être utilisés par d'autres workflows ou par les applications s'exécutant sur un hôte. Si vous ajoutez un service non principal qui dérive de la classe WorkflowRuntimeService après avoir démarré le moteur d'exécution de workflow, la méthode AddService appelle la méthode Start implémentée par ce service.
Notes
La méthode AddService applique la restriction selon laquelle deux services partageant le même objet Type ne peuvent être ajoutés à l'objet WorkflowRuntime. Toutefois, vous pouvez ajouter plusieurs services qui dérivent de la même classe de base. Il ne peut y avoir qu'un seul service dérivé de chacune des classes de service de base suivantes dans WorkflowRuntime : WorkflowSchedulerService, WorkflowCommitWorkBatchService et WorkflowPersistenceService. Si vous ajoutez plusieurs services dérivés de l'une de ces classes (par exemple, deux services de persistance), la méthode StartRuntime lève InvalidOperationException.