public static IKernel AddCodeActivityServices(this IKernel services, CodeActivityContext codeActivityContext) { Guard.That(() => codeActivityContext).IsNotNull(); Guard.That(() => services).IsNotNull(); services.Bind <CodeActivityContext>().ToConstant(codeActivityContext).InSingletonScope(); IWorkflowContext executionContext = codeActivityContext.GetExtension <IWorkflowContext>(); services.Bind <IWorkflowContext>().ToConstant(executionContext).InTransientScope(); ITracingService tracingService = codeActivityContext.GetExtension <ITracingService>(); services.Bind <ITracingService>().ToConstant(tracingService).InTransientScope(); IOrganizationServiceFactory organizationServiceFactory = codeActivityContext.GetExtension <IOrganizationServiceFactory>(); services.Bind <IOrganizationServiceFactory>().ToConstant(organizationServiceFactory).InTransientScope(); services.Bind <IOrganizationService>().ToMethod(context => { IOrganizationServiceFactory serviceFactory = context.Kernel.Get <IOrganizationServiceFactory>(); return(serviceFactory.CreateOrganizationService(null)); }); services.Bind <ICodeActivityExecutionContextAccessor>().To <CodeActivityExecutionContextAccessor>().InTransientScope(); services.Bind <User>().ToMethod(context => { ICodeActivityExecutionContextAccessor executionContextAccessor = context.Kernel.Get <ICodeActivityExecutionContextAccessor>(); return(executionContextAccessor.User); }); return(services); }
protected override void Execute(CodeActivityContext context) { IKernel services = _fakeServices; //Fake services were not provided so add actual implemnetations if (services == null) { services = new StandardKernel(); //Add mockable services here services.AddLogging(); } //No need to mock these since they are taken care by the mock framework services.AddCoreServices() .AddCodeActivityServices(context) .AddCodeActivityPipelineServices(); ICodeActivityExecutionContextAccessor executionContextAccessor = services.Get <ICodeActivityExecutionContextAccessor>(); try { CodeActivityExecutionContextAccessor.ValidateExecution(executionContextAccessor, GetType()); Execute(services); } catch (Exception ex) { OnError(ex, services); } }
public virtual void OnError(Exception ex, IKernel services) { ICodeActivityExecutionContextAccessor executionContextAccessor = services.Get <ICodeActivityExecutionContextAccessor>(); executionContextAccessor.HandleException(ex); }
public static void ValidateExecution(ICodeActivityExecutionContextAccessor executionContextAccessor, Type implementationType) { }