Partager via


WorkflowRuntime.AddService(Object) Méthode

Définition

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).

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 est true).

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.

S’applique à