Export (0) Print
Expand All

WorkflowCommitWorkBatchService Class

Note: This API is now obsolete.

Allows custom logic for the commitment of work batches.

Namespace:  System.Workflow.Runtime.Hosting
Assembly:  System.Workflow.Runtime (in System.Workflow.Runtime.dll)

[ObsoleteAttribute("The System.Workflow.* types are deprecated.  Instead, please use the new types from System.Activities.*")]
public abstract class WorkflowCommitWorkBatchService : WorkflowRuntimeService

The WorkflowCommitWorkBatchService type exposes the following members.

  NameDescription
Protected methodWorkflowCommitWorkBatchServiceWhen implemented in a derived class, initializes a new instance of the WorkflowCommitWorkBatchService class.
Top

  NameDescription
Protected propertyRuntimeGets the WorkflowRuntime for this service. (Inherited from WorkflowRuntimeService.)
Protected propertyStateGets the state of the WorkflowRuntimeService. (Inherited from WorkflowRuntimeService.)
Top

  NameDescription
Protected methodCommitWorkBatchCalled to commit the work batch.
Public methodEquals(Object)Determines whether the specified object is equal to the current object. (Inherited from Object.)
Protected methodFinalizeAllows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.)
Public methodGetHashCodeServes as the default hash function. (Inherited from Object.)
Public methodGetTypeGets the Type of the current instance. (Inherited from Object.)
Protected methodMemberwiseCloneCreates a shallow copy of the current Object. (Inherited from Object.)
Protected methodOnStartedWhen overridden in a derived class, represents the method that will be called when the workflow runtime engine raises the WorkflowRuntime.Started event. (Inherited from WorkflowRuntimeService.)
Protected methodOnStoppedWhen overridden in a derived class, represents the method that will be called when the workflow runtime engine raises the WorkflowRuntime.Stopped event. (Inherited from WorkflowRuntimeService.)
Protected methodRaiseServicesExceptionNotHandledEventRaises the WorkflowRuntime.ServicesExceptionNotHandled event. (Inherited from WorkflowRuntimeService.)
Protected methodStartWhen overridden in a derived class, starts the service and changes the State to Starting. (Inherited from WorkflowRuntimeService.)
Protected methodStopWhen overridden in a derived class, stops the service and changes the State to Stopping. (Inherited from WorkflowRuntimeService.)
Public methodToStringReturns a string that represents the current object. (Inherited from Object.)
Top

NoteNote

This material discusses types and namespaces that are obsolete. For more information, see Deprecated Types in Windows Workflow Foundation 4.5.

When a work batch is committed the runtime calls into the WorkflowCommitWorkBatchService and gives it a delegate to call to do the actual committing of the work batch. The runtime still has the primary responsibility of committing the work batch but allows the WorkflowCommitWorkBatchService to insert itself in the process for customization around the commit process.

This process allows custom error handling logic. If the WorkflowCommitWorkBatchService owns the transaction, which is the case when the Transaction.Current property returns null therefore necessitating the need to create a new ambient transaction, it is allowed to call the delegate more than once, creating a new transaction for each call. The most common case for this for example is to handle intermittent network problems or SQL cluster failovers. If the call to the WorkflowCommitWorkBatchService.CommitWorkBatchCallback throws an exception WorkflowCommitWorkBatchService can catch this exception, start a new transaction and call the delegate again. This gives a level of resilience to workflow instance execution that otherwise would cause workflows to terminate.

The following example demonstrates a class that inherits from WorkflowCommitWorkBatchService.

//Implementation of the abstract WorkflowCommitWorkBatchService class 
class DefaultCommitWorkBatchService : WorkflowCommitWorkBatchService
{
    protected override void CommitWorkBatch(CommitWorkBatchCallback commitWorkBatchCallback)
    {
        // Call base implementation 
        try
        {
            base.CommitWorkBatch(commitWorkBatchCallback);
        }
        catch (Exception e)
        {
            // Report work batch commit failures
            Console.WriteLine("Work batch failed: " + e.Message.ToString());
            throw;
        }
    }
}

.NET Framework

Supported in: 4, 3.5, 3.0
Obsolete (compiler warning) in 4.6
Obsolete (compiler warning) in 4.6
Obsolete (compiler warning) in 4.5
Obsolete (compiler warning) in 4.5.1
Obsolete (compiler warning) in 4.5.2

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Show:
© 2015 Microsoft