diff --git a/src/apps/Caspian.WorkflowFramework.Sample/appsettings.json b/src/apps/Caspian.WorkflowFramework.Sample/appsettings.json
index f2b3c6a..1d3c077 100644
--- a/src/apps/Caspian.WorkflowFramework.Sample/appsettings.json
+++ b/src/apps/Caspian.WorkflowFramework.Sample/appsettings.json
@@ -39,6 +39,6 @@
},
"ConnectionStrings": {
//"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;"
+ "DefaultConnection": "Server=.;Database=CaspianWfDb;User Id=sa;Password=123456;TrustServerCertificate=True;"
}
}
diff --git a/src/apps/Caspian.WorkflowFramework/Models/WorkflowModel.cs b/src/apps/Caspian.WorkflowFramework/Models/WorkflowModel.cs
index 33b8cf2..53bd483 100644
--- a/src/apps/Caspian.WorkflowFramework/Models/WorkflowModel.cs
+++ b/src/apps/Caspian.WorkflowFramework/Models/WorkflowModel.cs
@@ -41,7 +41,7 @@ public class WorkflowModel
/// فعلا استفاده ای نداریم
///
///
- public string? NextPageData { get; set; }
+ public JsonElement? NextPageData { get; set; }
///
/// آدرس صفحه بعدی
@@ -52,4 +52,9 @@ public class WorkflowModel
/// رویدادی که باید پس از سابمیت صفحه بعدی منتشر شود
///
public string? NextPageEventName { get; set; }
+
+ ///
+ /// جای ذخیرهی موقت برای استفاده های بعدی
+ ///
+ public JsonElement? WorkflowStash { get; set; }
}
diff --git a/src/apps/Caspian.WorkflowFramework/Utility/ConversionExtensions.cs b/src/apps/Caspian.WorkflowFramework/Utility/ConversionExtensions.cs
index 27f65a6..abad0ca 100644
--- a/src/apps/Caspian.WorkflowFramework/Utility/ConversionExtensions.cs
+++ b/src/apps/Caspian.WorkflowFramework/Utility/ConversionExtensions.cs
@@ -72,9 +72,39 @@ public static class ConversionExtensions
// ? (object?)dictionary[nameof(workflowModel.NextPageData)]
// : null;
- workflowModel.NextPageData = dictionary.ContainsKey(nameof(workflowModel.NextPageData))
- ? dictionary[nameof(workflowModel.NextPageData)]?.ToString()
- : null;
+ //workflowModel.NextPageData = dictionary.ContainsKey(nameof(workflowModel.NextPageData))
+ // ? dictionary[nameof(workflowModel.NextPageData)]?.ToString()
+ // : null;
+
+ if (dictionary.TryGetValue(nameof(workflowModel.NextPageData), out var nextPageDataObj) &&
+ nextPageDataObj is not null)
+ {
+ switch (nextPageDataObj)
+ {
+ case JsonElement je:
+ workflowModel.NextPageData = je;
+ break;
+
+ case JsonNode node:
+ // .NET 6+
+ workflowModel.NextPageData = JsonSerializer.SerializeToElement(node);
+ break;
+
+ case string s:
+ // اگر به صورت string JSON ذخیره شده
+ workflowModel.NextPageData = JsonSerializer.Deserialize(s);
+ break;
+
+ default:
+ // هر نوع دیگری: serialize و تبدیل به JsonElement
+ workflowModel.NextPageData = JsonSerializer.SerializeToElement(nextPageDataObj);
+ break;
+ }
+ }
+ else
+ {
+ workflowModel.NextPageData = null;
+ }
workflowModel.NextPageUrl = dictionary.ContainsKey(nameof(workflowModel.NextPageUrl))
? dictionary[nameof(workflowModel.NextPageUrl)]?.ToString()
@@ -84,6 +114,36 @@ public static class ConversionExtensions
? dictionary[nameof(workflowModel.NextPageEventName)]?.ToString()
: null;
+ if (dictionary.TryGetValue(nameof(workflowModel.WorkflowStash), out var workflowStashObj) &&
+ workflowStashObj is not null)
+ {
+ switch (workflowStashObj)
+ {
+ case JsonElement je:
+ workflowModel.WorkflowStash = je;
+ break;
+
+ case JsonNode node:
+ // .NET 6+
+ workflowModel.WorkflowStash = JsonSerializer.SerializeToElement(node);
+ break;
+
+ case string s:
+ // اگر به صورت string JSON ذخیره شده
+ workflowModel.WorkflowStash = JsonSerializer.Deserialize(s);
+ break;
+
+ default:
+ // هر نوع دیگری: serialize و تبدیل به JsonElement
+ workflowModel.WorkflowStash = JsonSerializer.SerializeToElement(workflowStashObj);
+ break;
+ }
+ }
+ else
+ {
+ workflowModel.WorkflowStash = null;
+ }
+
return workflowModel;
}
}
diff --git a/src/apps/Elsa.Server.Web/appsettings.json b/src/apps/Elsa.Server.Web/appsettings.json
index 4f1fe5a..017921a 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=WfDb;User Id=sa;Password=123456;TrustServerCertificate=True;",
+ "SqlServer": "Server=.;Database=CaspianWfDb;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",