Merge branch 'master' of https://github.com/elsa-workflows/elsa-core
This commit is contained in:
commit
bb6f9c422e
|
|
@ -10,13 +10,15 @@ namespace Elsa.Client
|
|||
IWorkflowDefinitionsApi workflowDefinitions,
|
||||
IWorkflowRegistryApi workflowRegistry,
|
||||
IWorkflowInstancesApi workflowInstances,
|
||||
IWebhookDefinitionsApi webhookDefinitions)
|
||||
IWebhookDefinitionsApi webhookDefinitions,
|
||||
IScriptingApi scriptingApi)
|
||||
{
|
||||
Activities = activities;
|
||||
WorkflowDefinitions = workflowDefinitions;
|
||||
WorkflowRegistry = workflowRegistry;
|
||||
WorkflowInstances = workflowInstances;
|
||||
WebhookDefinitions = webhookDefinitions;
|
||||
Scripting = scriptingApi;
|
||||
}
|
||||
|
||||
public IActivitiesApi Activities { get; }
|
||||
|
|
@ -24,5 +26,6 @@ namespace Elsa.Client
|
|||
public IWorkflowRegistryApi WorkflowRegistry { get; }
|
||||
public IWorkflowInstancesApi WorkflowInstances { get; }
|
||||
public IWebhookDefinitionsApi WebhookDefinitions { get; }
|
||||
public IScriptingApi Scripting { get; }
|
||||
}
|
||||
}
|
||||
|
|
@ -29,7 +29,8 @@ namespace Elsa.Client.Extensions
|
|||
.AddApiClient<IWorkflowDefinitionsApi>(refitSettings, httpClientFactory)
|
||||
.AddApiClient<IWorkflowRegistryApi>(refitSettings, httpClientFactory)
|
||||
.AddApiClient<IWorkflowInstancesApi>(refitSettings, httpClientFactory)
|
||||
.AddApiClient<IWebhookDefinitionsApi>(refitSettings, httpClientFactory);
|
||||
.AddApiClient<IWebhookDefinitionsApi>(refitSettings, httpClientFactory)
|
||||
.AddApiClient<IScriptingApi>(refitSettings, httpClientFactory);
|
||||
|
||||
return services
|
||||
.AddTransient<IElsaClient, ElsaClient>();
|
||||
|
|
|
|||
|
|
@ -10,5 +10,6 @@ namespace Elsa.Client
|
|||
IWorkflowRegistryApi WorkflowRegistry { get; }
|
||||
IWorkflowInstancesApi WorkflowInstances { get; }
|
||||
IWebhookDefinitionsApi WebhookDefinitions { get; }
|
||||
IScriptingApi Scripting { get; }
|
||||
}
|
||||
}
|
||||
13
src/clients/Elsa.Client/Services/IScriptingApi.cs
Normal file
13
src/clients/Elsa.Client/Services/IScriptingApi.cs
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
using System.Net.Http;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Refit;
|
||||
|
||||
namespace Elsa.Client.Services
|
||||
{
|
||||
public interface IScriptingApi
|
||||
{
|
||||
[Get("/v1/scripting/javascript/type-definitions/{workflowDefinitionId}")]
|
||||
Task<HttpContent> GetTypeScriptDefinitionFileAsync(string workflowDefinitionId, CancellationToken cancellationToken = default);
|
||||
}
|
||||
}
|
||||
|
|
@ -10,6 +10,7 @@ using Elsa.Providers.WorkflowStorage;
|
|||
using Elsa.Scripting.Liquid.Helpers;
|
||||
using Elsa.Scripting.Liquid.Messages;
|
||||
using Elsa.Scripting.Liquid.Options;
|
||||
using Elsa.Services;
|
||||
using Elsa.Services.Models;
|
||||
using Elsa.Services.WorkflowStorage;
|
||||
using Fluid;
|
||||
|
|
@ -26,12 +27,14 @@ namespace Elsa.Scripting.Liquid.Handlers
|
|||
private readonly IConfiguration _configuration;
|
||||
private readonly IWorkflowStorageService _workflowStorageService;
|
||||
private readonly LiquidOptions _liquidOptions;
|
||||
private readonly IActivityTypeService _activityTypeService;
|
||||
|
||||
public ConfigureLiquidEngine(IConfiguration configuration, IWorkflowStorageService workflowStorageService, IOptions<LiquidOptions> liquidOptions)
|
||||
public ConfigureLiquidEngine(IConfiguration configuration, IWorkflowStorageService workflowStorageService, IOptions<LiquidOptions> liquidOptions, IActivityTypeService activityTypeService)
|
||||
{
|
||||
_configuration = configuration;
|
||||
_workflowStorageService = workflowStorageService;
|
||||
_liquidOptions = liquidOptions.Value;
|
||||
_activityTypeService = activityTypeService;
|
||||
}
|
||||
|
||||
public Task Handle(EvaluatingLiquidExpression notification, CancellationToken cancellationToken)
|
||||
|
|
@ -61,7 +64,7 @@ namespace Elsa.Scripting.Liquid.Handlers
|
|||
memberAccessStrategy.Register<ActivityExecutionContext, LiquidActivityModel>((x, a) => GetActivityModel(x, a));
|
||||
memberAccessStrategy.Register<LiquidActivityModel, object?>((model, name) => GetActivityProperty(model, name, cancellationToken));
|
||||
memberAccessStrategy.Register<LiquidObjectAccessor<JObject>, JObject>((x, name) => x.GetValueAsync(name));
|
||||
memberAccessStrategy.Register<ExpandoObject, object>((x, name) => ((IDictionary<string, object>) x)[name]);
|
||||
memberAccessStrategy.Register<ExpandoObject, object>((x, name) => ((IDictionary<string, object>)x)[name]);
|
||||
memberAccessStrategy.Register<JObject, object?>((source, name) => source.GetValue(name, StringComparison.OrdinalIgnoreCase));
|
||||
|
||||
if (_liquidOptions.EnableConfigurationAccess)
|
||||
|
|
@ -94,7 +97,14 @@ namespace Elsa.Scripting.Liquid.Handlers
|
|||
var workflowExecutionContext = activityExecutionContext.WorkflowExecutionContext;
|
||||
var activityBlueprint = activityModel.ActivityId != null ? workflowExecutionContext.GetActivityBlueprintById(activityModel.ActivityId)! : workflowExecutionContext.GetActivityBlueprintByName(activityModel.ActivityName!)!;
|
||||
var activityId = activityBlueprint.Id;
|
||||
var storageProviderName = activityBlueprint.PropertyStorageProviders.GetItem(name);
|
||||
|
||||
var activityType = await _activityTypeService.GetActivityTypeAsync(activityBlueprint.Type, cancellationToken);
|
||||
var activityDescriptor = await _activityTypeService.DescribeActivityType(activityType, cancellationToken);
|
||||
|
||||
var property = activityDescriptor.OutputProperties.FirstOrDefault(d => d.Name == name);
|
||||
|
||||
var storageProviderName = activityBlueprint.PropertyStorageProviders.GetItem(name) ?? property?.DefaultWorkflowStorageProvider;
|
||||
|
||||
var storageContext = new WorkflowStorageContext(workflowExecutionContext.WorkflowInstance, activityId);
|
||||
var value = await _workflowStorageService.LoadAsync(storageProviderName, storageContext, name, cancellationToken);
|
||||
return value;
|
||||
|
|
|
|||
Loading…
Reference in a new issue