Add fileds 'InstanceMode' & 'PageNumber' in workflow response

This commit is contained in:
Behzad Alizadeh
2026-01-13 11:11:12 +03:30
parent 9ef806b196
commit 0bc95706fa
3 changed files with 129 additions and 138 deletions
@@ -15,6 +15,14 @@ public class WorkflowModel
/// </summary> /// </summary>
public string? InstanceId { get; set; } public string? InstanceId { get; set; }
/// <summary>
/// نوع نمونه
/// <remark>
/// exist, new, ...
/// </remark>
/// </summary>
public string? InstanceMode { get; set; } = "exist";
/// <summary> /// <summary>
/// نام گردش کار /// نام گردش کار
/// </summary> /// </summary>
@@ -25,6 +33,7 @@ public class WorkflowModel
/// </summary> /// </summary>
public bool IsComplete { get; set; } public bool IsComplete { get; set; }
/// <summary> /// <summary>
/// برای کدام کاربر؟ /// برای کدام کاربر؟
/// </summary> /// </summary>
@@ -48,6 +57,11 @@ public class WorkflowModel
/// </summary> /// </summary>
public string? NextPageUrl { get; set; } public string? NextPageUrl { get; set; }
/// <summary>
/// شماره صفحه
/// </summary>
public int? PageNumber { get; set; }
/// <summary> /// <summary>
/// رویدادی که باید پس از سابمیت صفحه بعدی منتشر شود /// رویدادی که باید پس از سابمیت صفحه بعدی منتشر شود
/// </summary> /// </summary>
@@ -102,6 +102,7 @@ public class WorkflowService : IWorkflowService, ILoggable
var workflowModel = dictionary.ConvertToWorkflowModel(); var workflowModel = dictionary.ConvertToWorkflowModel();
workflowModel.InstanceId = workflowClient.WorkflowInstanceId; workflowModel.InstanceId = workflowClient.WorkflowInstanceId;
workflowModel.UserId = input.UserId; workflowModel.UserId = input.UserId;
workflowModel.InstanceMode = "exist";
response = new WorkflowResponse<WorkflowModel>() response = new WorkflowResponse<WorkflowModel>()
{ {
@@ -194,6 +195,7 @@ public class WorkflowService : IWorkflowService, ILoggable
if (runningWorkflowInstance != null) if (runningWorkflowInstance != null)
{ {
workflowInstanceId = runningWorkflowInstance.Id; workflowInstanceId = runningWorkflowInstance.Id;
} }
else else
{ {
@@ -220,6 +222,7 @@ public class WorkflowService : IWorkflowService, ILoggable
var workflowModel = dictionary.ConvertToWorkflowModel(); var workflowModel = dictionary.ConvertToWorkflowModel();
workflowModel.InstanceId = workflowInstanceId; workflowModel.InstanceId = workflowInstanceId;
workflowModel.UserId = input.UserId; workflowModel.UserId = input.UserId;
workflowModel.InstanceId = runningWorkflowInstance != null ? "exist" : "new";
response = new WorkflowResponse<WorkflowModel>() response = new WorkflowResponse<WorkflowModel>()
{ {
@@ -309,6 +312,7 @@ public class WorkflowService : IWorkflowService, ILoggable
var workflowModel = dictionary.ConvertToWorkflowModel(); var workflowModel = dictionary.ConvertToWorkflowModel();
workflowModel.InstanceId = instance.Id; workflowModel.InstanceId = instance.Id;
workflowModel.UserId = instance.ExternalUserId; workflowModel.UserId = instance.ExternalUserId;
workflowModel.InstanceMode = "exist";
response = new WorkflowResponse<WorkflowModel>() response = new WorkflowResponse<WorkflowModel>()
{ {
@@ -379,6 +383,7 @@ public class WorkflowService : IWorkflowService, ILoggable
var workflowModel = dictionary.ConvertToWorkflowModel(); var workflowModel = dictionary.ConvertToWorkflowModel();
workflowModel.InstanceId = instance.Id; workflowModel.InstanceId = instance.Id;
workflowModel.UserId = instance.ExternalUserId; workflowModel.UserId = instance.ExternalUserId;
workflowModel.InstanceMode = "exist";
response = new WorkflowResponse<WorkflowModel>() response = new WorkflowResponse<WorkflowModel>()
{ {
@@ -436,6 +441,7 @@ public class WorkflowService : IWorkflowService, ILoggable
var model = dict.ConvertToWorkflowModel(); var model = dict.ConvertToWorkflowModel();
model.InstanceId = instance.Id; model.InstanceId = instance.Id;
model.UserId = instance.ExternalUserId; model.UserId = instance.ExternalUserId;
model.InstanceMode = "exist";
result.Add(model); result.Add(model);
} }
@@ -560,6 +566,7 @@ public class WorkflowService : IWorkflowService, ILoggable
var model = dict.ConvertToWorkflowModel(); var model = dict.ConvertToWorkflowModel();
model.InstanceId = latest.Id; model.InstanceId = latest.Id;
model.UserId = latest.ExternalUserId; model.UserId = latest.ExternalUserId;
model.InstanceMode = "exist";
var response = new WorkflowResponse<WorkflowModel> var response = new WorkflowResponse<WorkflowModel>
{ {
@@ -1,15 +1,16 @@
using System; using Caspian.WorkflowFramework.Models;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Text.Json; using System.Text.Json;
using System.Text.Json.Nodes; using System.Text.Json.Nodes;
using System.Threading.Tasks; using System.Threading.Tasks;
using Caspian.WorkflowFramework.Models;
namespace Caspian.WorkflowFramework.Utility; namespace Caspian.WorkflowFramework.Utility
public static class ConversionExtensions
{ {
public static class ConversionExtensions
{
public static WorkflowModel ConvertToWorkflowModel(this Dictionary<string, object?> dictionary) public static WorkflowModel ConvertToWorkflowModel(this Dictionary<string, object?> dictionary)
{ {
var workflowModel = new WorkflowModel(); var workflowModel = new WorkflowModel();
@@ -22,6 +23,10 @@ public static class ConversionExtensions
? dictionary[nameof(workflowModel.InstanceId)]?.ToString() ? dictionary[nameof(workflowModel.InstanceId)]?.ToString()
: null; : null;
workflowModel.InstanceMode = dictionary.ContainsKey(nameof(workflowModel.InstanceMode))
? dictionary[nameof(workflowModel.InstanceMode)]?.ToString()
: null;
workflowModel.Name = dictionary.ContainsKey(nameof(workflowModel.Name)) workflowModel.Name = dictionary.ContainsKey(nameof(workflowModel.Name))
? dictionary[nameof(workflowModel.Name)]?.ToString() ? dictionary[nameof(workflowModel.Name)]?.ToString()
: null; : null;
@@ -34,6 +39,7 @@ public static class ConversionExtensions
? long.TryParse(dictionary[nameof(workflowModel.UserId)]?.ToString(), out var userId) ? userId : (long?)null ? long.TryParse(dictionary[nameof(workflowModel.UserId)]?.ToString(), out var userId) ? userId : (long?)null
: null; : null;
//CurrentPageData
if (dictionary.TryGetValue(nameof(workflowModel.CurrentPageData), out var currentPageDataObj) && if (dictionary.TryGetValue(nameof(workflowModel.CurrentPageData), out var currentPageDataObj) &&
currentPageDataObj is not null) currentPageDataObj is not null)
{ {
@@ -64,18 +70,7 @@ public static class ConversionExtensions
workflowModel.CurrentPageData = null; workflowModel.CurrentPageData = null;
} }
//workflowModel.CurrentPageData = dictionary.ContainsKey(nameof(workflowModel.CurrentPageData)) //NextPageData
// ? dictionary[nameof(workflowModel.CurrentPageData)]?.ToString()
// : null;
//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;
if (dictionary.TryGetValue(nameof(workflowModel.NextPageData), out var nextPageDataObj) && if (dictionary.TryGetValue(nameof(workflowModel.NextPageData), out var nextPageDataObj) &&
nextPageDataObj is not null) nextPageDataObj is not null)
{ {
@@ -110,40 +105,15 @@ public static class ConversionExtensions
? dictionary[nameof(workflowModel.NextPageUrl)]?.ToString() ? dictionary[nameof(workflowModel.NextPageUrl)]?.ToString()
: null; : null;
workflowModel.PageNumber = dictionary.ContainsKey(nameof(workflowModel.PageNumber))
? int.TryParse(dictionary[nameof(workflowModel.PageNumber)]?.ToString(), out var pageNumber) ? pageNumber : (int?)null
: null;
workflowModel.NextPageEventName = dictionary.ContainsKey(nameof(workflowModel.NextPageEventName)) workflowModel.NextPageEventName = dictionary.ContainsKey(nameof(workflowModel.NextPageEventName))
? dictionary[nameof(workflowModel.NextPageEventName)]?.ToString() ? dictionary[nameof(workflowModel.NextPageEventName)]?.ToString()
: null; : 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<JsonElement>(s);
break;
default:
// هر نوع دیگری: serialize و تبدیل به JsonElement
workflowModel.WorkflowStash = JsonSerializer.SerializeToElement(workflowStashObj);
break;
}
}
else
{
workflowModel.WorkflowStash = null;
}
return workflowModel; return workflowModel;
} }
}
} }