Beispiel #1
0
        private static void LoadMOdules()
        {
            try
            {
                AppDomain.CurrentDomain.AssemblyResolve += (sender, args) =>
                {
                    var location = Path.Combine(AppDomain.CurrentDomain.RelativeSearchPath,
                                                args.Name.Split(',')[0] + ".dll");
                    if (File.Exists(location))
                    {
                        var assembly = Assembly.LoadFrom(location);
                        return(assembly);
                    }
                    return(null);
                };

                ReflectionHelper.GetImportedModules(out LoadedModuleTypes, out LoadedContextTypes);
                //foreach (var loadedModuleType in LoadedModuleTypes)
                //{
                //    var loadedModule = (ModuleBase)Activator.CreateInstance(loadedModuleType);
                //    Modules.Insert(0, loadedModule);
                //}
            }
            catch (Exception exception)
            {
                Trace.WriteLine($"Unable to load modules: {exception}");
            }
        }
Beispiel #2
0
        protected override void OnStart(string[] args)
        {
            if (server == null)
            {
                ServerApplication serverApplication;

                try
                {
                    serverApplication = new ServerApplication();
                }
                catch (Exception)
                {
                    throw new Exception("Error i creating server application.");
                }

                try
                {
                    serverApplication.ApplicationName = "Tralus.Shell.WorkflowService";
                    // The service can only manage workflows for those business classes that are contained in Modules specified by the serverApplication.Modules collection.
                    // So, do not forget to add the required Modules to this collection via the serverApplication.Modules.Add method.
                    serverApplication.Modules.BeginInit();

                    var workflowModule = new WorkflowModule();

                    workflowModule.RunningWorkflowInstanceInfoType   = typeof(DevExpress.ExpressApp.Workflow.EF.EFRunningWorkflowInstanceInfo);
                    workflowModule.StartWorkflowRequestType          = typeof(DevExpress.ExpressApp.Workflow.EF.EFStartWorkflowRequest);
                    workflowModule.UserActivityVersionType           = typeof(DevExpress.ExpressApp.Workflow.Versioning.EFUserActivityVersion);
                    workflowModule.WorkflowControlCommandRequestType = typeof(DevExpress.ExpressApp.Workflow.EF.EFWorkflowInstanceControlCommandRequest);
                    workflowModule.WorkflowDefinitionType            = typeof(DevExpress.ExpressApp.Workflow.EF.EFWorkflowDefinition);
                    workflowModule.WorkflowInstanceKeyType           = typeof(DevExpress.Workflow.EF.EFInstanceKey);
                    workflowModule.WorkflowInstanceType = typeof(DevExpress.Workflow.EF.EFWorkflowInstance);

                    serverApplication.Modules.Add(workflowModule);
                    serverApplication.Modules.Add(new ShellModule());
                }
                catch (Exception ex)
                {
                    throw new Exception("Error in creating server", ex);
                }

                try
                {
                    IEnumerable <Type> loadedModuleTypes;
                    ReflectionHelper.GetImportedModules(out loadedModuleTypes, out _loadedContextTypes);

                    foreach (var loadedModuleType in loadedModuleTypes)
                    {
                        var loadedModule = (ModuleBase)Activator.CreateInstance(loadedModuleType);
                        serverApplication.Modules.Insert(0, loadedModule);
                    }
                }
                catch (Exception ex)
                {
                    throw new Exception("Error in loading modules", ex);
                }


                try
                {
                    if (ConfigurationManager.ConnectionStrings["Default"] != null)
                    {
                        serverApplication.ConnectionString = ConfigurationManager.ConnectionStrings["Default"].ConnectionString;
                    }
                    serverApplication.Setup();
                    serverApplication.Logon();
                }
                catch (Exception ex)
                {
                    throw new Exception("Error in setting up.", ex);
                }

                try
                {
                    IObjectSpaceProvider objectSpaceProvider = serverApplication.ObjectSpaceProvider;

                    //WorkflowCreationKnownTypesProvider.AddKnownType(typeof(DevExpress.Xpo.Helpers.IdList));

                    try
                    {
                        server = new WorkflowServer("http://localhost:46232", objectSpaceProvider, objectSpaceProvider);
                    }
                    catch (Exception e)
                    {
                        throw new Exception("Error in creating WorkflowServer.", e);
                    }

                    try
                    {
                        server.StartWorkflowListenerService.DelayPeriod      = TimeSpan.FromSeconds(15);
                        server.StartWorkflowByRequestService.DelayPeriod     = TimeSpan.FromSeconds(15);
                        server.RefreshWorkflowDefinitionsService.DelayPeriod = TimeSpan.FromMinutes(15);
                    }
                    catch (Exception e)
                    {
                        throw new Exception(
                                  $"Error in configuring WorkflowServer. Server={server}, StartWorkflowListenerService={server.StartWorkflowListenerService}, StartWorkflowByRequestService={server.StartWorkflowByRequestService}, RefreshWorkflowDefinitionsService={server.RefreshWorkflowDefinitionsService}", e);
                    }

                    server.CustomizeHost += delegate(object sender, CustomizeHostEventArgs e)
                    {
                        e.WorkflowInstanceStoreBehavior.WorkflowInstanceStore.RunnableInstancesDetectionPeriod = TimeSpan.FromSeconds(15);
                    };

                    server.CustomHandleException += delegate(object sender, CustomHandleServiceExceptionEventArgs e)
                    {
                        Tracing.Tracer.LogError(e.Exception);
                        e.Handled = false;
                    };
                }
                catch (Exception ex)
                {
                    throw new Exception("Error in configuring server", ex);
                }
            }

            try
            {
                server.Start();
            }
            catch (Exception ex)
            {
                throw new Exception("Error in starting server", ex);
            }
        }