Gracefully handle null EventData during event publishing

This commit is contained in:
Behzad Alizadeh
2025-12-10 11:07:12 +03:30
parent 175b7b9288
commit 9b5412f33e
3 changed files with 32 additions and 17 deletions
@@ -1,16 +1,19 @@
using Caspian.WorkflowFramework.Models;
using Caspian.WorkflowFramework.Contracts;
using Newtonsoft.Json;
using Elsa.Workflows.Runtime;
using Microsoft.Extensions.DependencyInjection;
using Caspian.WorkflowFramework.Contracts;
using Caspian.WorkflowFramework.Models;
using Caspian.WorkflowFramework.Utility;
using Elsa.Common.Models;
using Elsa.Workflows.Management;
using Elsa.Workflows.Management.Filters;
using Elsa.Workflows.Runtime.Messages;
using Elsa.Workflows.Models;
using Elsa.Common.Models;
using Caspian.WorkflowFramework.Utility;
using Elsa.Workflows.Runtime;
using Elsa.Workflows.Runtime.Messages;
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
{
@@ -157,7 +160,23 @@ namespace Caspian.WorkflowFramework.Services
return response;
}
await _eventPublisher.PublishAsync(input.EventName, null, input.WorkflowInstanceId, null, input.EventData);
dynamic payload = null;
if (input.EventData.ValueKind != JsonValueKind.Undefined &&
input.EventData.ValueKind != JsonValueKind.Null)
{
var json = input.EventData.GetRawText();
var settings = new JsonSerializerSettings
{
Converters = { new ExpandoObjectConverter() }
};
// تبدیل JSON به object داینامیک
payload = JsonConvert.DeserializeObject<ExpandoObject>(json, settings);
}
await _eventPublisher.PublishAsync(input.EventName, null, input.WorkflowInstanceId, null, payload);
var variables = await _workflowInstanceVariableManager.GetVariablesAsync(input.WorkflowInstanceId);