Upfrade package to 1.1.0-preview.6
This commit is contained in:
@@ -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
@@ -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>
|
||||||
Reference in New Issue
Block a user