diff --git a/Caspian.WorkflowFramework.Package/Models/WorkflowModel.cs b/Caspian.WorkflowFramework.Package/Models/WorkflowModel.cs
index 668ed30..2413314 100644
--- a/Caspian.WorkflowFramework.Package/Models/WorkflowModel.cs
+++ b/Caspian.WorkflowFramework.Package/Models/WorkflowModel.cs
@@ -1,9 +1,10 @@
-using System;
+using JetBrains.Annotations;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.Text.Json;
using System.Threading.Tasks;
-using JetBrains.Annotations;
namespace Caspian.WorkflowFramework.Models
{
@@ -33,7 +34,7 @@ namespace Caspian.WorkflowFramework.Models
///
/// داده صفحه جاری
///
- public string? CurrentPageData { get; set; }
+ public JsonElement? CurrentPageData { get; set; }
///
/// داده صفحه بعد
@@ -41,7 +42,7 @@ namespace Caspian.WorkflowFramework.Models
/// فعلا استفاده ای نداریم
///
///
- public string? NextPageData { get; set; }
+ public JsonElement? NextPageData { get; set; }
///
/// آدرس صفحه بعدی
diff --git a/Caspian.WorkflowFramework.Package/Utility/ConversionExtensions.cs b/Caspian.WorkflowFramework.Package/Utility/ConversionExtensions.cs
index eedf6c3..cb472ab 100644
--- a/Caspian.WorkflowFramework.Package/Utility/ConversionExtensions.cs
+++ b/Caspian.WorkflowFramework.Package/Utility/ConversionExtensions.cs
@@ -1,9 +1,11 @@
-using System;
+using Caspian.WorkflowFramework.Models;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.Text.Json;
+using System.Text.Json.Nodes;
using System.Threading.Tasks;
-using Caspian.WorkflowFramework.Models;
namespace Caspian.WorkflowFramework.Utility
{
@@ -33,21 +35,67 @@ namespace Caspian.WorkflowFramework.Utility
? long.TryParse(dictionary[nameof(workflowModel.UserId)]?.ToString(), out var userId) ? userId : (long?)null
: null;
- //workflowModel.CurrentPageData = dictionary.ContainsKey(nameof(workflowModel.CurrentPageData))
- // ? (object?)dictionary[nameof(workflowModel.CurrentPageData)]
- // : null;
+ //CurrentPageData
+ if (dictionary.TryGetValue(nameof(workflowModel.CurrentPageData), out var currentPageDataObj) &&
+ currentPageDataObj is not null)
+ {
+ switch (currentPageDataObj)
+ {
+ case JsonElement je:
+ workflowModel.CurrentPageData = je;
+ break;
- workflowModel.CurrentPageData = dictionary.ContainsKey(nameof(workflowModel.CurrentPageData))
- ? dictionary[nameof(workflowModel.CurrentPageData)]?.ToString()
- : null;
+ case JsonNode node:
+ // .NET 6+
+ workflowModel.CurrentPageData = JsonSerializer.SerializeToElement(node);
+ break;
- //workflowModel.NextPageData = dictionary.ContainsKey(nameof(workflowModel.NextPageData))
- // ? (object?)dictionary[nameof(workflowModel.NextPageData)]
- // : null;
-
- workflowModel.NextPageData = dictionary.ContainsKey(nameof(workflowModel.NextPageData))
- ? dictionary[nameof(workflowModel.NextPageData)]?.ToString()
- : null;
+ case string s:
+ // اگر به صورت string JSON ذخیره شده
+ workflowModel.CurrentPageData = JsonSerializer.Deserialize(s);
+ break;
+
+ default:
+ // هر نوع دیگری: serialize و تبدیل به JsonElement
+ workflowModel.CurrentPageData = JsonSerializer.SerializeToElement(currentPageDataObj);
+ break;
+ }
+ }
+ else
+ {
+ workflowModel.CurrentPageData = null;
+ }
+
+ //NextPageData
+ 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()
diff --git a/SampleWorkflowWeb/Controllers/HomeController.cs b/SampleWorkflowWeb/Controllers/HomeController.cs
index 064ff5c..4ea21a7 100644
--- a/SampleWorkflowWeb/Controllers/HomeController.cs
+++ b/SampleWorkflowWeb/Controllers/HomeController.cs
@@ -114,7 +114,7 @@ public class HomeController : Controller, ILoggable
{
EventName = input.PageEventName,
WorkflowInstanceId = input.WorkflowId,
- EventData = JsonConvert.SerializeObject(input)
+ EventData = System.Text.Json.JsonSerializer.SerializeToElement(input)
};
var response = await _workflowService.PublishEventAsync(publishModel);
@@ -173,7 +173,7 @@ public class HomeController : Controller, ILoggable
{
EventName = input.PageEventName,
WorkflowInstanceId = input.WorkflowId,
- EventData = JsonConvert.SerializeObject(input)
+ EventData = System.Text.Json.JsonSerializer.SerializeToElement(input)
};
var response = await _workflowService.PublishEventAsync(publishEventModel);
diff --git a/SampleWorkflowWeb/Controllers/TransferController.cs b/SampleWorkflowWeb/Controllers/TransferController.cs
index 9fdf6c9..0df35e1 100644
--- a/SampleWorkflowWeb/Controllers/TransferController.cs
+++ b/SampleWorkflowWeb/Controllers/TransferController.cs
@@ -98,7 +98,7 @@ namespace SampleWorkflowWeb.Controllers
{
EventName = input.PageEventName,
WorkflowInstanceId = input.WorkflowId,
- EventData = JsonConvert.SerializeObject(input)
+ EventData = System.Text.Json.JsonSerializer.SerializeToElement(input)
};
var response = await _workflowService.PublishEventAsync(publishModel);
@@ -189,7 +189,7 @@ namespace SampleWorkflowWeb.Controllers
{
EventName = input.PageEventName,
WorkflowInstanceId = input.WorkflowId,
- EventData = JsonConvert.SerializeObject(input)
+ EventData = System.Text.Json.JsonSerializer.SerializeToElement(input)
};
var response = await _workflowService.PublishEventAsync(publishModel);
@@ -258,7 +258,7 @@ namespace SampleWorkflowWeb.Controllers
{
EventName = input.PageEventName,
WorkflowInstanceId = input.WorkflowId,
- EventData = JsonConvert.SerializeObject(input)
+ EventData = System.Text.Json.JsonSerializer.SerializeToElement(input)
};
var response = await _workflowService.PublishEventAsync(publishModel);
diff --git a/SampleWorkflowWeb/Models/Test/WorkflowModel.cs b/SampleWorkflowWeb/Models/Test/WorkflowModel.cs
index 339527e..9bbab19 100644
--- a/SampleWorkflowWeb/Models/Test/WorkflowModel.cs
+++ b/SampleWorkflowWeb/Models/Test/WorkflowModel.cs
@@ -1,4 +1,6 @@
-namespace SampleWorkflowWeb.Models
+using System.Text.Json;
+
+namespace SampleWorkflowWeb.Models
{
public class WorkflowModel
{
@@ -28,7 +30,7 @@
///
/// داده صفحه جاری
///
- public string? CurrentPageData { get; set; }
+ public JsonElement? CurrentPageData { get; set; }
///
/// داده صفحه بعد
@@ -36,7 +38,7 @@
/// فعلا استفاده ای نداریم
///
///
- public string? NextPageData { get; set; }
+ public JsonElement? NextPageData { get; set; }
///
/// آدرس صفحه بعدی