Add getActivityId JS function

This commit is contained in:
Sipke Schoorstra 2021-12-10 15:56:32 +01:00
parent 8a30bfe66a
commit 1f94b977f4
2 changed files with 9 additions and 0 deletions

View file

@ -55,6 +55,7 @@ namespace Elsa.Scripting.JavaScript.Handlers
engine.SetValue("getWorkflowDefinitionIdByName", (Func<string, string?>)(name => GetWorkflowDefinitionIdByName(activityExecutionContext, name)));
engine.SetValue("getWorkflowDefinitionIdByTag", (Func<string, string?>)(tag => GetWorkflowDefinitionIdByTag(activityExecutionContext, tag)));
engine.SetValue("getActivity", (Func<string, object?>)(idOrName => GetActivityModel(activityExecutionContext, idOrName)));
engine.SetValue("getActivityId", (Func<string, string?>)(activityName => GetActivityId(activityExecutionContext, activityName)));
engine.SetValue("findExecutedActivityIdByType", (Func<string, string?>)(activityTypeName => FindExecutedActivityByTypeAsync(activityExecutionContext, activityTypeName, cancellationToken).Result));
engine.SetValue("jsonEncode", (Func<object, string>)(JsonConvert.SerializeObject));
engine.SetValue("jsonDecode", (Func<string, object?>)JsonConvert.DeserializeObject);
@ -165,6 +166,13 @@ namespace Elsa.Scripting.JavaScript.Handlers
return activity == null ? null : workflowExecutionContext.WorkflowInstance.ActivityData[activity.Id];
}
private string? GetActivityId(ActivityExecutionContext context, string activityName)
{
var workflowExecutionContext = context.WorkflowExecutionContext;
var activity = workflowExecutionContext.GetActivityBlueprintByName(activityName);
return activity?.Id;
}
private async Task<object?> GetActivityPropertyAsync(string activityIdOrName, string propertyName, ActivityExecutionContext context)
{
var workflowExecutionContext = context.WorkflowExecutionContext;

View file

@ -37,6 +37,7 @@ namespace Elsa.Scripting.JavaScript.Handlers
output.AppendLine("declare function getWorkflowDefinitionIdByName(name: string): string;");
output.AppendLine("declare function getWorkflowDefinitionIdByTag(tag: string): string;");
output.AppendLine("declare function getActivity(idOrName: string): any;");
output.AppendLine("declare function getActivityId(name: string): string;");
output.AppendLine("declare function getActivityProperty(activityIdOrName: string, propertyName: string): any;");
output.AppendLine("declare const activityExecutionContext: ActivityExecutionContext;");