diff --git a/NuGet.Config b/NuGet.Config index 828d13e..0c81c84 100644 --- a/NuGet.Config +++ b/NuGet.Config @@ -9,5 +9,6 @@ + \ No newline at end of file diff --git a/src/apps/Caspian.WorkflowFramework.Sample/Controllers/WorkflowController.cs b/src/apps/Caspian.WorkflowFramework.Sample/Controllers/WorkflowController.cs index 379e2f4..8d66372 100644 --- a/src/apps/Caspian.WorkflowFramework.Sample/Controllers/WorkflowController.cs +++ b/src/apps/Caspian.WorkflowFramework.Sample/Controllers/WorkflowController.cs @@ -8,6 +8,9 @@ using San.MongoLogger; using Newtonsoft.Json; namespace Caspian.WorkflowFramework.Sample.Controllers; + +[ApiController] +[Route("[controller]")] public class WorkflowController : Controller, ILoggable { #region Fields @@ -26,7 +29,7 @@ public class WorkflowController : Controller, ILoggable #region Start [HttpPost("Start")] - public async Task Start(CreateAndExecuteWorkflowModel input) + public async Task Start([FromBody] CreateAndExecuteWorkflowModel input) { _logger.Log("Start of StartWorkflow action", JsonConvert.SerializeObject(input)); @@ -46,7 +49,7 @@ public class WorkflowController : Controller, ILoggable #region Do [HttpPost("Do")] - public async Task Do(PublishEventModel input) + public async Task Do([FromBody] PublishEventModel input) { _logger.Log("Start of Do action", WFInstanceId: input.WorkflowInstanceId, JsonConvert.SerializeObject(input)); @@ -61,7 +64,7 @@ public class WorkflowController : Controller, ILoggable #region GetState [HttpPost("GetState")] - public async Task GetState(InquiryStateModel input) + public async Task GetState([FromBody] InquiryStateModel input) { _logger.Log("Start of GetState action", WFInstanceId: input.WorkflowInstanceId, JsonConvert.SerializeObject(input)); diff --git a/src/apps/Caspian.WorkflowFramework.Sample/appsettings.json b/src/apps/Caspian.WorkflowFramework.Sample/appsettings.json index c53f2ba..f2b3c6a 100644 --- a/src/apps/Caspian.WorkflowFramework.Sample/appsettings.json +++ b/src/apps/Caspian.WorkflowFramework.Sample/appsettings.json @@ -38,6 +38,7 @@ "reloadConfigOnChange": true }, "ConnectionStrings": { - "DefaultConnection": "Data Source=.;Initial Catalog=WfDb;User ID=sa;Password=123456;Integrated Security=false;TrustServerCertificate=True;" + //"DefaultConnection": "Data Source=.;Initial Catalog=WfDb;User ID=sa;Password=123456;Integrated Security=false;TrustServerCertificate=True;" + "DefaultConnection": "Server=.;Database=WfDb;User Id=sa;Password=123456;TrustServerCertificate=True;" } } diff --git a/src/apps/Caspian.WorkflowFramework/Models/PublishEventModel.cs b/src/apps/Caspian.WorkflowFramework/Models/PublishEventModel.cs index 10cd5ad..479f132 100644 --- a/src/apps/Caspian.WorkflowFramework/Models/PublishEventModel.cs +++ b/src/apps/Caspian.WorkflowFramework/Models/PublishEventModel.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; +using System.Text.Json; using System.Threading.Tasks; using JetBrains.Annotations; @@ -17,5 +18,5 @@ public class PublishEventModel public string EventName { get; set; } [Required] - public string? EventData { get; set; } + public JsonElement EventData { get; set; } } diff --git a/src/apps/Caspian.WorkflowFramework/Services/WorkflowService.cs b/src/apps/Caspian.WorkflowFramework/Services/WorkflowService.cs index 7ca42ac..de8e96e 100644 --- a/src/apps/Caspian.WorkflowFramework/Services/WorkflowService.cs +++ b/src/apps/Caspian.WorkflowFramework/Services/WorkflowService.cs @@ -1,5 +1,7 @@ using System; using System.Collections.Generic; +using System.Diagnostics; +using System.Dynamic; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -14,12 +16,13 @@ using Elsa.Workflows.Management.Filters; using Elsa.Workflows.Models; using Elsa.Workflows.Runtime; using Elsa.Workflows.Runtime.Messages; +using FastEndpoints; using Microsoft.CodeAnalysis.Operations; using Microsoft.Extensions.DependencyInjection; using Microsoft.Win32; -using San.MongoLogger; using Newtonsoft.Json; -using System.Diagnostics; +using Newtonsoft.Json.Converters; +using San.MongoLogger; namespace Caspian.WorkflowFramework.Services; public class WorkflowService : IWorkflowService, ILoggable @@ -165,7 +168,18 @@ public class WorkflowService : IWorkflowService, ILoggable return response; } - await _eventPublisher.PublishAsync(input.EventName, null, input.WorkflowInstanceId, null, input.EventData); + var json = input.EventData.GetRawText(); + + var settings = new JsonSerializerSettings + { + Converters = { new ExpandoObjectConverter() } + }; + + // تبدیل JSON به object داینامیک + dynamic payload = JsonConvert.DeserializeObject(json, settings); + + //await _eventPublisher.PublishAsync(input.EventName, null, input.WorkflowInstanceId, null, input.EventData, asynchronous: true); + await _eventPublisher.PublishAsync(input.EventName, null, input.WorkflowInstanceId, null, payload); var variables = await _workflowInstanceVariableManager.GetVariablesAsync(input.WorkflowInstanceId); diff --git a/src/apps/Elsa.Server.Web/appsettings.json b/src/apps/Elsa.Server.Web/appsettings.json index f07b655..4f1fe5a 100644 --- a/src/apps/Elsa.Server.Web/appsettings.json +++ b/src/apps/Elsa.Server.Web/appsettings.json @@ -39,7 +39,7 @@ "ConnectionStrings": { "Sqlite": "", //"Data Source=App_Data/elsa.sqlite.db;Cache=Shared;", //"SqlServer": "Server=localhost,1433;Initial Catalog=Elsa;User=sa;Password=!Elsa2025@;Encrypt=false;PersistSecurityInfo=false", - "SqlServer": "Server=.;Database=WorkflowDb_3-5-0_2;User Id=sa;Password=123456;TrustServerCertificate=True;", + "SqlServer": "Server=.;Database=WfDb;User Id=sa;Password=123456;TrustServerCertificate=True;", "MySql": "", //"Server=localhost;Database=elsa;Uid=admin;Pwd=password;", "PostgreSql": "", //"Server=localhost;Username=elsa;Database=elsa;Port=5432;Password=elsa;SSLMode=Prefer;MaxPoolSize=2000;Timeout=60", "Citus": "", //"Server=localhost;Username=citus;Database=citus;Port=9700;Password=citus;SSLMode=Prefer;MaxPoolSize=2000;Timeout=60", @@ -173,11 +173,11 @@ }, { "Name": "Staging", - "ServerUrl": "https://staging.acme.com/elsa/api" + "ServerUrl": "https://localhost:5001/elsa/api" }, { "Name": "Production", - "ServerUrl": "https://production.acme.com/elsa/api" + "ServerUrl": "https://localhost:5001/elsa/api" } ] }, diff --git a/src/apps/Elsa.ServerAndStudio.Web/appsettings.json b/src/apps/Elsa.ServerAndStudio.Web/appsettings.json index c2f42a4..3f4d61f 100644 --- a/src/apps/Elsa.ServerAndStudio.Web/appsettings.json +++ b/src/apps/Elsa.ServerAndStudio.Web/appsettings.json @@ -39,7 +39,7 @@ "Sqlite": "", //"Data Source=elsa.sqlite.db;Cache=Shared;", "RabbitMq": "", //"rabbitmq://guest:guest@localhost:5672", "MySql": "", //"Server=localhost;Database=elsa;Uid=user;Pwd=password;", - "SqlServer": "Server=.;Database=WorkflowDb_3-5-0;User Id=sa;Password=123456;TrustServerCertificate=True;", + "SqlServer": "Server=.;Database=WfDb;User Id=sa;Password=123456;TrustServerCertificate=True;", "PostgreSql": "" //"Server=localhost;Username=elsa;Database=elsa;Port=5432;Password=elsa;SSLMode=Prefer;MaxPoolSize=2000;Timeout=60" }, "DatabaseProvider": "SqlServer", //"Sqlite",