Add InstanceMode and PageNumber to WorkflowModel

This commit is contained in:
Behzad Alizadeh
2026-01-07 17:06:40 +03:30
parent ccb3a24758
commit 23cbb88f2d
4 changed files with 621 additions and 590 deletions
@@ -5,7 +5,7 @@
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<PackageId>Caspian.WorkflowFramework</PackageId>
<Version>1.1.0-preview.7</Version>
<Version>1.1.0-preview.9</Version>
<Authors>Digital banking team</Authors>
<Company>Caspian</Company>
<Product>Caspian.WorkflowFramework</Product>
@@ -1,4 +1,9 @@
using System.Text.Json;
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;
@@ -10,6 +15,14 @@ public class WorkflowModel
/// </summary>
public string? InstanceId { get; set; }
/// <summary>
/// نوع نمونه
/// <remark>
/// exist, new, ...
/// </remark>
/// </summary>
public string? InstanceMode { get; set; } = "exist";
/// <summary>
/// نام گردش کار
/// </summary>
@@ -43,6 +56,11 @@ public class WorkflowModel
/// </summary>
public string? NextPageUrl { get; set; }
/// <summary>
/// شماره صفحه
/// </summary>
public int? PageNumber { get; set; }
/// <summary>
/// رویدادی که باید پس از سابمیت صفحه بعدی منتشر شود
/// </summary>
@@ -1,4 +1,7 @@
using Caspian.WorkflowFramework.Contracts;
using System.Diagnostics;
using System.Dynamic;
using System.Text.Json;
using Caspian.WorkflowFramework.Contracts;
using Caspian.WorkflowFramework.Models;
using Caspian.WorkflowFramework.Utility;
using Elsa.Common.Entities;
@@ -13,14 +16,10 @@ using Microsoft.Extensions.DependencyInjection;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using San.MongoLogger;
using System.Diagnostics;
using System.Dynamic;
using System.Text.Json;
namespace Caspian.WorkflowFramework.Services
namespace Caspian.WorkflowFramework.Services;
public class WorkflowService : IWorkflowService, ILoggable
{
public class WorkflowService : IWorkflowService, ILoggable
{
#region Fields
private readonly IServiceProvider _serviceProvider;
private readonly IWorkflowRuntime _workflowRuntime;
@@ -103,6 +102,7 @@ namespace Caspian.WorkflowFramework.Services
var workflowModel = dictionary.ConvertToWorkflowModel();
workflowModel.InstanceId = workflowClient.WorkflowInstanceId;
workflowModel.UserId = input.UserId;
workflowModel.InstanceMode = "exist";
response = new WorkflowResponse<WorkflowModel>()
{
@@ -191,10 +191,11 @@ namespace Caspian.WorkflowFramework.Services
// WorkflowStatus = WorkflowStatus.Running
// });
var workflowInstanceId = string.Empty;
string workflowInstanceId = string.Empty;
if (runningWorkflowInstance != null)
{
workflowInstanceId = runningWorkflowInstance.Id;
}
else
{
@@ -221,6 +222,7 @@ namespace Caspian.WorkflowFramework.Services
var workflowModel = dictionary.ConvertToWorkflowModel();
workflowModel.InstanceId = workflowInstanceId;
workflowModel.UserId = input.UserId;
workflowModel.InstanceId = runningWorkflowInstance != null ? "exist" : "new";
response = new WorkflowResponse<WorkflowModel>()
{
@@ -310,6 +312,7 @@ namespace Caspian.WorkflowFramework.Services
var workflowModel = dictionary.ConvertToWorkflowModel();
workflowModel.InstanceId = instance.Id;
workflowModel.UserId = instance.ExternalUserId;
workflowModel.InstanceMode = "exist";
response = new WorkflowResponse<WorkflowModel>()
{
@@ -380,6 +383,7 @@ namespace Caspian.WorkflowFramework.Services
var workflowModel = dictionary.ConvertToWorkflowModel();
workflowModel.InstanceId = instance.Id;
workflowModel.UserId = instance.ExternalUserId;
workflowModel.InstanceMode = "exist";
response = new WorkflowResponse<WorkflowModel>()
{
@@ -437,6 +441,7 @@ namespace Caspian.WorkflowFramework.Services
var model = dict.ConvertToWorkflowModel();
model.InstanceId = instance.Id;
model.UserId = instance.ExternalUserId;
model.InstanceMode = "exist";
result.Add(model);
}
@@ -561,6 +566,7 @@ namespace Caspian.WorkflowFramework.Services
var model = dict.ConvertToWorkflowModel();
model.InstanceId = latest.Id;
model.UserId = latest.ExternalUserId;
model.InstanceMode = "exist";
var response = new WorkflowResponse<WorkflowModel>
{
@@ -717,5 +723,4 @@ namespace Caspian.WorkflowFramework.Services
}
}
#endregion
}
}
@@ -23,6 +23,10 @@ namespace Caspian.WorkflowFramework.Utility
? dictionary[nameof(workflowModel.InstanceId)]?.ToString()
: null;
workflowModel.InstanceMode = dictionary.ContainsKey(nameof(workflowModel.InstanceMode))
? dictionary[nameof(workflowModel.InstanceMode)]?.ToString()
: null;
workflowModel.Name = dictionary.ContainsKey(nameof(workflowModel.Name))
? dictionary[nameof(workflowModel.Name)]?.ToString()
: null;
@@ -101,6 +105,10 @@ namespace Caspian.WorkflowFramework.Utility
? dictionary[nameof(workflowModel.NextPageUrl)]?.ToString()
: 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))
? dictionary[nameof(workflowModel.NextPageEventName)]?.ToString()
: null;