From b2ad297a0d5ddeb1b40fad28cb13b18450dbfcdf Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Sat, 4 Jan 2020 11:17:11 +0100 Subject: [PATCH 1/3] Fix README.md --- .../Elsa.Persistence.EntityFrameworkCore/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/persistence/Elsa.Persistence.EntityFrameworkCore/README.md b/src/persistence/Elsa.Persistence.EntityFrameworkCore/README.md index f596b2be2..15e9e32d6 100644 --- a/src/persistence/Elsa.Persistence.EntityFrameworkCore/README.md +++ b/src/persistence/Elsa.Persistence.EntityFrameworkCore/README.md @@ -19,12 +19,12 @@ To create the database, run the migrations. Example command: ```bash -SET EF_CONNECTIONSTRING="Data Source=c:\data\elsa.db;Cache=Shared" +SET EF_CONNECTIONSTRING=Data Source=c:\data\elsa.db;Cache=Shared dotnet ef database update --context SqliteContext -SET EF_CONNECTIONSTRING="Server=localhost;Database=Elsa;User=sa;Password=Secret_password123!;" +SET EF_CONNECTIONSTRING=Server=localhost;Database=Elsa;User=sa;Password=Secret_password123!; dotnet ef database update --context SqlServerContext -SET EF_CONNECTIONSTRING="Server=localhost;Database=Elsa;Port=5432;User Id=postgres;Password=Secret_password123!" +SET EF_CONNECTIONSTRING=Server=localhost;Database=Elsa;Port=5432;User Id=postgres;Password=Secret_password123! dotnet ef database update --context PostgreSqlContext ``` \ No newline at end of file From 7aa9f0510f466794bef8f2c0983b86488a278562 Mon Sep 17 00:00:00 2001 From: James Doran Date: Mon, 6 Jan 2020 19:32:25 +1030 Subject: [PATCH 2/3] Fixed Serialization for Objects (#220) Registered ObjectHandler in TypeNameHandlingConverter Passed through object type in IValueHandler.Serialize to be written as TypeName --- .../Converters/TypeNameHandlingConverter.cs | 3 ++- .../Serialization/Handlers/DefaultValueHandler.cs | 4 ++-- .../Serialization/Handlers/IValueHandler.cs | 4 ++-- .../Serialization/Handlers/ObjectHandler.cs | 6 +++--- .../Serialization/Handlers/PrimitiveValueHandler.cs | 2 +- 5 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/core/Elsa.Abstractions/Converters/TypeNameHandlingConverter.cs b/src/core/Elsa.Abstractions/Converters/TypeNameHandlingConverter.cs index 435c5e0fb..af9c38b97 100644 --- a/src/core/Elsa.Abstractions/Converters/TypeNameHandlingConverter.cs +++ b/src/core/Elsa.Abstractions/Converters/TypeNameHandlingConverter.cs @@ -28,6 +28,7 @@ namespace Elsa.Converters static TypeNameHandlingConverter() { + RegisterTypeHandler(); RegisterTypeHandler(); RegisterTypeHandler(); RegisterTypeHandler(); @@ -51,7 +52,7 @@ namespace Elsa.Converters var token = JToken.FromObject(value); var handler = GetHandler(x => x.CanSerialize(token, valueType)); - handler.Serialize(writer, serializer, token); + handler.Serialize(writer, serializer, valueType, token); } public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) diff --git a/src/core/Elsa.Abstractions/Serialization/Handlers/DefaultValueHandler.cs b/src/core/Elsa.Abstractions/Serialization/Handlers/DefaultValueHandler.cs index 91150e3a6..fc68b3dc3 100644 --- a/src/core/Elsa.Abstractions/Serialization/Handlers/DefaultValueHandler.cs +++ b/src/core/Elsa.Abstractions/Serialization/Handlers/DefaultValueHandler.cs @@ -1,4 +1,4 @@ -using System; +using System; using Newtonsoft.Json; using Newtonsoft.Json.Linq; @@ -10,6 +10,6 @@ namespace Elsa.Serialization.Handlers public bool CanSerialize(JToken value, Type type) => true; public bool CanDeserialize(JToken value, Type type) => true; public object Deserialize(JsonReader reader, JsonSerializer serializer, Type type, JToken value) => serializer.Deserialize(value.CreateReader(), type); - public void Serialize(JsonWriter writer, JsonSerializer serializer, JToken value) => serializer.Serialize(writer, value); + public void Serialize(JsonWriter writer, JsonSerializer serializer, Type type, JToken value) => serializer.Serialize(writer, value); } } \ No newline at end of file diff --git a/src/core/Elsa.Abstractions/Serialization/Handlers/IValueHandler.cs b/src/core/Elsa.Abstractions/Serialization/Handlers/IValueHandler.cs index 4ba69e2e3..096e6fbdc 100644 --- a/src/core/Elsa.Abstractions/Serialization/Handlers/IValueHandler.cs +++ b/src/core/Elsa.Abstractions/Serialization/Handlers/IValueHandler.cs @@ -1,4 +1,4 @@ -using System; +using System; using Newtonsoft.Json; using Newtonsoft.Json.Linq; @@ -10,6 +10,6 @@ namespace Elsa.Serialization.Handlers bool CanSerialize(JToken value, Type type); bool CanDeserialize(JToken value, Type type); object Deserialize(JsonReader reader, JsonSerializer serializer, Type type, JToken value); - void Serialize(JsonWriter writer, JsonSerializer serializer, JToken value); + void Serialize(JsonWriter writer, JsonSerializer serializer, Type type, JToken value); } } \ No newline at end of file diff --git a/src/core/Elsa.Abstractions/Serialization/Handlers/ObjectHandler.cs b/src/core/Elsa.Abstractions/Serialization/Handlers/ObjectHandler.cs index 2045f2e17..4c9c7f037 100644 --- a/src/core/Elsa.Abstractions/Serialization/Handlers/ObjectHandler.cs +++ b/src/core/Elsa.Abstractions/Serialization/Handlers/ObjectHandler.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Linq; using Newtonsoft.Json; using Newtonsoft.Json.Linq; @@ -19,9 +19,9 @@ namespace Elsa.Serialization.Handlers return value.ToObject(objectType, serializer); } - public void Serialize(JsonWriter writer, JsonSerializer serializer, JToken value) + public void Serialize(JsonWriter writer, JsonSerializer serializer, Type type, JToken value) { - value[TypeFieldName] = GetAssemblyQualifiedTypeName(value.GetType()); + value[TypeFieldName] = GetAssemblyQualifiedTypeName(type); value.WriteTo(writer, serializer.Converters.ToArray()); } diff --git a/src/core/Elsa.Abstractions/Serialization/Handlers/PrimitiveValueHandler.cs b/src/core/Elsa.Abstractions/Serialization/Handlers/PrimitiveValueHandler.cs index 151209aff..49926ca08 100644 --- a/src/core/Elsa.Abstractions/Serialization/Handlers/PrimitiveValueHandler.cs +++ b/src/core/Elsa.Abstractions/Serialization/Handlers/PrimitiveValueHandler.cs @@ -18,7 +18,7 @@ namespace Elsa.Serialization.Handlers return ParseValue(valueToken); } - public virtual void Serialize(JsonWriter writer, JsonSerializer serializer, JToken value) + public virtual void Serialize(JsonWriter writer, JsonSerializer serializer, Type type, JToken value) { var token = new JObject { From 6ea6498ca03e74d7a3094ba46bac2de09988f4d4 Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Mon, 6 Jan 2020 21:11:05 +0100 Subject: [PATCH 3/3] Fix issue due to parallel access to DbContext Fixes #219 --- .../Controllers/WorkflowDefinitionController.cs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/dashboard/Elsa.Dashboard/Areas/Elsa/Controllers/WorkflowDefinitionController.cs b/src/dashboard/Elsa.Dashboard/Areas/Elsa/Controllers/WorkflowDefinitionController.cs index f09a62e4d..87d2e6f32 100644 --- a/src/dashboard/Elsa.Dashboard/Areas/Elsa/Controllers/WorkflowDefinitionController.cs +++ b/src/dashboard/Elsa.Dashboard/Areas/Elsa/Controllers/WorkflowDefinitionController.cs @@ -1,3 +1,4 @@ +using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; @@ -52,11 +53,15 @@ namespace Elsa.Dashboard.Areas.Elsa.Controllers VersionOptions.LatestOrPublished, cancellationToken ); - var workflowModelTasks = workflows.Select( - async x => await CreateWorkflowDefinitionListItemModelAsync(x, cancellationToken) - ) - .ToList(); - var workflowModels = workflowModelTasks.Select(x => x.Result); + + var workflowModels = new List(); + + foreach (var workflow in workflows) + { + var workflowModel = await CreateWorkflowDefinitionListItemModelAsync(workflow, cancellationToken); + workflowModels.Add(workflowModel); + } + var groups = workflowModels.GroupBy(x => x.WorkflowDefinition.DefinitionId); var model = new WorkflowDefinitionListViewModel {