Add project files.

This commit is contained in:
2025-08-18 17:11:43 +03:30
parent 807dc263be
commit e5eb10d604
3943 changed files with 223719 additions and 0 deletions
@@ -0,0 +1,38 @@
using Elsa.Common;
using Elsa.Common.Multitenancy;
using Elsa.Extensions;
using Elsa.Scheduling;
using Elsa.Workflows.Models;
using Elsa.Workflows.Runtime;
using Elsa.Workflows.Runtime.Messages;
using Quartz;
namespace Elsa.Quartz.Jobs;
/// <summary>
/// A job that resumes a workflow.
/// </summary>
public class ResumeWorkflowJob(IWorkflowRuntime workflowRuntime, IJsonSerializer jsonSerializer, ITenantFinder tenantFinder, ITenantAccessor tenantAccessor) : IJob
{
/// <inheritdoc />
public async Task Execute(IJobExecutionContext context)
{
var tenant = await context.GetTenantAsync(tenantFinder);
using (tenantAccessor.PushContext(tenant))
{
var map = context.MergedJobDataMap;
var serializedActivityHandle = (string)map.Get(nameof(ScheduleExistingWorkflowInstanceRequest.ActivityHandle));
var activityHandle = serializedActivityHandle != null! ? jsonSerializer.Deserialize<ActivityHandle>(serializedActivityHandle) : null;
var workflowInstanceId = (string)map.Get(nameof(ScheduleExistingWorkflowInstanceRequest.WorkflowInstanceId));
var workflowClient = await workflowRuntime.CreateClientAsync(workflowInstanceId, context.CancellationToken);
var request = new RunWorkflowInstanceRequest
{
BookmarkId = (string)map.Get(nameof(ScheduleExistingWorkflowInstanceRequest.BookmarkId)),
ActivityHandle = activityHandle,
Input = map.GetDictionary(nameof(ScheduleExistingWorkflowInstanceRequest.Input)),
Properties = map.GetDictionary(nameof(ScheduleExistingWorkflowInstanceRequest.Properties)),
};
await workflowClient.RunInstanceAsync(request, cancellationToken: context.CancellationToken);
}
}
}
@@ -0,0 +1,65 @@
using Elsa.Common.Multitenancy;
using Elsa.Extensions;
using Elsa.Scheduling;
using Elsa.Workflows.Models;
using Elsa.Workflows.Runtime;
using Elsa.Workflows.Runtime.Exceptions;
using Microsoft.Extensions.Logging;
using Quartz;
namespace Elsa.Quartz.Jobs;
/// <summary>
/// A job that runs a workflow.
/// </summary>
public class RunWorkflowJob(
ITenantAccessor tenantAccessor,
ITenantFinder tenantFinder,
IWorkflowStarter workflowStarter,
ILogger<RunWorkflowJob> logger) : IJob
{
/// <inheritdoc />
public async Task Execute(IJobExecutionContext context)
{
var tenant = await context.GetTenantAsync(tenantFinder);
using (tenantAccessor.PushContext(tenant))
{
var map = context.MergedJobDataMap;
var cancellationToken = context.CancellationToken;
var startRequest = new StartWorkflowRequest
{
WorkflowDefinitionHandle = WorkflowDefinitionHandle.ByDefinitionVersionId((string)map.Get(nameof(ScheduleNewWorkflowInstanceRequest.WorkflowDefinitionHandle.DefinitionVersionId))),
CorrelationId = (string?)map.Get(nameof(ScheduleNewWorkflowInstanceRequest.CorrelationId)),
TriggerActivityId = (string?)map.Get(nameof(ScheduleNewWorkflowInstanceRequest.TriggerActivityId)),
Input = map.GetDictionary(nameof(ScheduleNewWorkflowInstanceRequest.Input)),
Variables = map.GetDictionary(nameof(ScheduleNewWorkflowInstanceRequest.Variables)),
Properties = map.GetDictionary(nameof(ScheduleNewWorkflowInstanceRequest.Properties)),
ParentId = (string?)map.Get(nameof(ScheduleNewWorkflowInstanceRequest.ParentId))
};
try
{
var startResponse = await workflowStarter.StartWorkflowAsync(startRequest, cancellationToken);
if (startResponse.CannotStart)
{
logger.LogWarning("Workflow activation strategy disallowed starting workflow {WorkflowDefinitionHandle} with correlation ID {CorrelationId}", startRequest.WorkflowDefinitionHandle, startRequest.CorrelationId);
return;
}
logger.LogInformation("Started workflow {WorkflowInstanceId} with correlation ID {CorrelationId}", startResponse.WorkflowInstanceId, startRequest.CorrelationId);
}
catch (WorkflowGraphNotFoundException e)
{
logger.LogWarning(e, "Could not find workflow graph for workflow definition handle {WorkflowDefinitionHandle}", startRequest.WorkflowDefinitionHandle);
await context.Scheduler.DeleteJob(context.JobDetail.Key, cancellationToken);
}
catch (Exception e)
{
logger.LogError(e, "An error occurred while starting workflow {WorkflowDefinitionHandle} with correlation ID {CorrelationId}", startRequest.WorkflowDefinitionHandle, startRequest.CorrelationId);
await context.Scheduler.DeleteJob(context.JobDetail.Key, cancellationToken);
}
}
}
}