/// <summary> /// Creates a new instance of Core /// </summary> /// <param name="Settings"></param> /// <param name="metadata"></param> /// <param name="SecurityRoles"></param> /// <param name="Workflows"></param> public Core(XrmMockupSettings Settings, MetadataSkeleton metadata, List <Entity> Workflows, List <SecurityRole> SecurityRoles) { this.dataMethods = new DataMethods(this, metadata, SecurityRoles); this.ServiceFactory = new MockupServiceProviderAndFactory(this); this.settings = Settings; this.InitRequestMap(); this.pluginManager = new PluginManager(Settings.BasePluginTypes, metadata.EntityMetadata, metadata.Plugins); this.workflowManager = new WorkflowManager(Settings.CodeActivityInstanceTypes, Settings.IncludeAllWorkflows, Workflows, metadata.EntityMetadata); var tracingService = new TracingService(); var factory = new MockupServiceProviderAndFactory(this, null, tracingService); var service = factory.CreateOrganizationService(null, new MockupServiceSettings(false, true, MockupServiceSettings.Role.SDK)); dataMethods.SetWorkflowServices(tracingService, factory, service); }
internal void ExecuteWaitingWorkflows(PluginContext pluginContext, Core core) { var provider = new MockupServiceProviderAndFactory(core, pluginContext, new TracingService()); var service = provider.CreateOrganizationService(null, new MockupServiceSettings(true, true, MockupServiceSettings.Role.SDK)); foreach (var waitInfo in waitingWorkflows.ToList()) { waitingWorkflows.Remove(waitInfo); var variables = waitInfo.VariablesInstance; var shadowService = core.ServiceFactory.CreateAdminOrganizationService(new MockupServiceSettings(false, true, MockupServiceSettings.Role.SDK)); var primaryEntity = shadowService.Retrieve(waitInfo.PrimaryEntity.LogicalName, waitInfo.PrimaryEntity.Id, new ColumnSet(true)); variables["InputEntities(\"primaryEntity\")"] = primaryEntity; waitInfo.Element.Execute(waitInfo.ElementIndex, ref variables, core.TimeOffset, service, provider, new TracingService(), false); if (variables["Wait"] != null) { waitingWorkflows.Add(variables["Wait"] as WaitInfo); } } }
/// <summary> /// Create an organization service for the systemuser with the given id /// </summary> /// <param name="userId"></param> /// <returns></returns> public IOrganizationService CreateOrganizationService(Guid userId) { return(ServiceFactory.CreateOrganizationService(userId)); }