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); } } }