Upfrade package to 1.1.0-preview.6

This commit is contained in:
Behzad Alizadeh
2026-01-03 15:09:40 +03:30
parent 217b24be31
commit d31c2ab0c7
4 changed files with 116 additions and 3 deletions
@@ -5,7 +5,7 @@
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
<PackageId>Caspian.WorkflowFramework</PackageId> <PackageId>Caspian.WorkflowFramework</PackageId>
<Version>1.1.0-preview.4</Version> <Version>1.1.0-preview.6</Version>
<Authors>Digital banking team</Authors> <Authors>Digital banking team</Authors>
<Company>Caspian</Company> <Company>Caspian</Company>
<Product>Caspian.WorkflowFramework</Product> <Product>Caspian.WorkflowFramework</Product>
@@ -72,7 +72,7 @@
<PackageReference Include="JetBrains.Annotations" Version="2024.3.0" /> <PackageReference Include="JetBrains.Annotations" Version="2024.3.0" />
<PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" Version="2.3.0" /> <PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" Version="2.3.0" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="9.0.7" /> <PackageReference Include="Microsoft.Extensions.Hosting" Version="9.0.7" />
<PackageReference Include="San.MongoLogger" Version="1.0.0-preview.9" /> <PackageReference Include="San.MongoLogger" Version="1.0.1" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
@@ -12,6 +12,13 @@ namespace Caspian.WorkflowFramework.Contracts
/// <remarks>Create a new workflow instance and executes it and waits for it to complete or reach a suspend point.</remarks> /// <remarks>Create a new workflow instance and executes it and waits for it to complete or reach a suspend point.</remarks>
Task<WorkflowResponse<WorkflowModel>> CreateAndExecuteAsync(CreateAndExecuteWorkflowModel input); Task<WorkflowResponse<WorkflowModel>> CreateAndExecuteAsync(CreateAndExecuteWorkflowModel input);
/// <summary>
/// Create and get a last workflow running instance.
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
Task<WorkflowResponse<WorkflowModel>> CreateOrGetInstanceAsync(CreateAndExecuteWorkflowModel input);
/// <summary> /// <summary>
/// Publishes the specified event. /// Publishes the specified event.
/// </summary> /// </summary>
@@ -2,6 +2,7 @@
using Caspian.WorkflowFramework.Models; using Caspian.WorkflowFramework.Models;
using Caspian.WorkflowFramework.Utility; using Caspian.WorkflowFramework.Utility;
using Elsa.Common.Models; using Elsa.Common.Models;
using Elsa.Workflows;
using Elsa.Workflows.Management; using Elsa.Workflows.Management;
using Elsa.Workflows.Management.Filters; using Elsa.Workflows.Management.Filters;
using Elsa.Workflows.Models; using Elsa.Workflows.Models;
@@ -130,6 +131,111 @@ namespace Caspian.WorkflowFramework.Services
} }
#endregion #endregion
#region CreateOrGetInstanceAsync
/// <inheritdoc />
public async Task<WorkflowResponse<WorkflowModel>> CreateOrGetInstanceAsync(CreateAndExecuteWorkflowModel input)
{
var sw = Stopwatch.StartNew();
try
{
_logger.Log("Start of CreateOrGetInstanceAsync", input);
WorkflowResponse<WorkflowModel> response;
var workflowClient = await _workflowRuntime.CreateClientAsync();
var definition = await _workflowDefinitionService
.FindWorkflowDefinitionAsync(new WorkflowDefinitionFilter()
{
Name = input.Name
});
if (definition == null)
{
var msg = $"Workflow '{input.Name}' defintion not found";
response = new WorkflowResponse<WorkflowModel>()
{
Status = 1,
Message = msg,
Data = null
};
sw.Stop();
_logger.Log("End of CreateOrGetInstanceAsync", WFInstanceId: response.Data?.InstanceId, response, sw.ElapsedMilliseconds);
return response;
}
var runningWorkflowInstance = await _workflowInstanceManager
.FindAsync(new WorkflowInstanceFilter()
{
ExternalUserId = input.UserId,
DefinitionId = definition.DefinitionId,
WorkflowStatus = WorkflowStatus.Running
});
var workflowInstanceId = string.Empty;
if (runningWorkflowInstance != null)
{
workflowInstanceId = runningWorkflowInstance.Id;
}
else
{
var instanceInput = new Dictionary<string, object> { ["UserId"] = input.UserId };
input.Version = VersionOptions.Published;
var newInstance = await workflowClient.CreateInstanceAsync(new CreateWorkflowInstanceRequest
{
WorkflowDefinitionHandle = WorkflowDefinitionHandle.ByDefinitionId(definition.DefinitionId, input.Version),
Input = instanceInput,
ExternalUserId = input.UserId
});
var result = await workflowClient.RunInstanceAsync(RunWorkflowInstanceRequest.Empty);
workflowInstanceId = result.WorkflowInstanceId;
}
var variables = await _workflowInstanceVariableManager
.GetVariablesAsync(workflowInstanceId);
// تبدیل به دیکشنری
var dictionary = variables.ToDictionary(a => a.Variable.Name, a => a.Value);
var workflowModel = dictionary.ConvertToWorkflowModel();
workflowModel.InstanceId = workflowClient.WorkflowInstanceId;
workflowModel.UserId = input.UserId;
response = new WorkflowResponse<WorkflowModel>()
{
Status = 0,
Message = "Success",
Data = workflowModel
};
sw.Stop();
_logger.Log("End of CreateOrGetInstanceAsync", WFInstanceId: response.Data?.InstanceId, response, sw.ElapsedMilliseconds);
return response;
}
catch (Exception ex)
{
var response = new WorkflowResponse<WorkflowModel>()
{
Status = 100,
Message = ex.Message,
Data = null
};
sw.Stop();
_logger.Log("Exception occurs in CreateOrGetInstanceAsync", WFInstanceId: response.Data?.InstanceId, response, sw.ElapsedMilliseconds, ex);
return response;
}
}
#endregion
#region PublishEventAsync #region PublishEventAsync
/// <inheritdoc /> /// <inheritdoc />
public async Task<WorkflowResponse<WorkflowModel>> PublishEventAsync(PublishEventModel input) public async Task<WorkflowResponse<WorkflowModel>> PublishEventAsync(PublishEventModel input)
+1 -1
View File
@@ -7,6 +7,6 @@
<add key="Elsa 3 Preview" value="https://f.feedz.io/elsa-workflows/elsa-3/nuget/index.json" /> <add key="Elsa 3 Preview" value="https://f.feedz.io/elsa-workflows/elsa-3/nuget/index.json" />
<add key="Webhooks Core Preview" value="https://f.feedz.io/sfmskywalker/webhooks-core/nuget/index.json" /> <add key="Webhooks Core Preview" value="https://f.feedz.io/sfmskywalker/webhooks-core/nuget/index.json" />
<add key="Local Package source" value="D:\MyNugetPackages" /> <add key="Local Package source" value="D:\MyNugetPackages" />
<add key="Workflow Package source" value="D:\WorkflowNugetRepository\Packages" /> <add key="Workflow Package source" value="D:\NugetPackageRepository\WorkflowPackages" />
</packageSources> </packageSources>
</configuration> </configuration>