namespace <%= client %>.<%= package %>.BusinessLogic
{
using System.Activities;
using <%= client %>.<%= package %>.BusinessLogic.Logging;
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Workflow;
///
/// Base class for Dynamics 365 workflow activities.
///
public abstract class WorkflowActivity : CodeActivity
{
///
/// Execute the custom workflow activity.
///
/// The context.
/// The workflow context.
/// Organization service.
/// Log writer.
/// Repository factory.
protected abstract void ExecuteWorkflowActivity(CodeActivityContext context, IWorkflowContext workflowContext, IOrganizationService orgSvc, ILogWriter logWriter, IRepositoryFactory repoFactory);
///
protected override void Execute(CodeActivityContext context)
{
var tracingSvc = context.GetExtension();
var workflowContext = context.GetExtension();
var serviceFactory = context.GetExtension();
var orgSvc = serviceFactory.CreateOrganizationService(workflowContext.UserId);
var repositoryFactory = new RepositoryFactory(orgSvc);
var logWriter = new TracingServiceLogWriter(tracingSvc, true);
this.ExecuteWorkflowActivity(context, workflowContext, orgSvc, logWriter, repositoryFactory);
}
}
}