From bb9ebef362475e61b9d66b7c26e30fe566268e8e Mon Sep 17 00:00:00 2001 From: cristinamudura <80831066+cristinamudura@users.noreply.github.com> Date: Wed, 14 Dec 2022 13:05:45 +0100 Subject: [PATCH] Added correlation activity (#3530) * Added correlation activity * Changed the category from "Control Flow" to "Primitives" --- .../components/icons/activities/correlate.tsx | 15 +++++++++++ .../src/components/icons/activities/index.tsx | 1 + .../src/services/activity-icon-registry.tsx | 4 ++- .../Activities/Correlate.cs | 27 +++++++++++++++++++ 4 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 src/designer/elsa-workflows-designer/src/components/icons/activities/correlate.tsx create mode 100644 src/modules/Elsa.Workflows.Core/Activities/Correlate.cs diff --git a/src/designer/elsa-workflows-designer/src/components/icons/activities/correlate.tsx b/src/designer/elsa-workflows-designer/src/components/icons/activities/correlate.tsx new file mode 100644 index 000000000..8e6f610dd --- /dev/null +++ b/src/designer/elsa-workflows-designer/src/components/icons/activities/correlate.tsx @@ -0,0 +1,15 @@ +import {FunctionalComponent, h} from '@stencil/core'; +import {ActivityIconSettings, getActivityIconCssClass} from "./models"; + +export const CorrelateIcon: FunctionalComponent = (settings) => ( + + + + + + + + + +); diff --git a/src/designer/elsa-workflows-designer/src/components/icons/activities/index.tsx b/src/designer/elsa-workflows-designer/src/components/icons/activities/index.tsx index 36eb7980a..574a61a4d 100644 --- a/src/designer/elsa-workflows-designer/src/components/icons/activities/index.tsx +++ b/src/designer/elsa-workflows-designer/src/components/icons/activities/index.tsx @@ -15,3 +15,4 @@ export * from "./read-line"; export * from "./run-javascript"; export * from "./timer"; export * from "./write-line"; +export * from "./correlate"; diff --git a/src/designer/elsa-workflows-designer/src/services/activity-icon-registry.tsx b/src/designer/elsa-workflows-designer/src/services/activity-icon-registry.tsx index b92a9e109..059cf6f55 100644 --- a/src/designer/elsa-workflows-designer/src/services/activity-icon-registry.tsx +++ b/src/designer/elsa-workflows-designer/src/services/activity-icon-registry.tsx @@ -11,7 +11,8 @@ import { IfIcon, ReadLineIcon, WriteLineIcon, RunJavaScriptIcon, - HttpEndpointIcon, HttpResponseIcon, HttpRequestIcon + HttpEndpointIcon, HttpResponseIcon, HttpRequestIcon, + CorrelateIcon } from "../components/icons/activities"; export type ActivityType = string; @@ -39,6 +40,7 @@ export class ActivityIconRegistry { this.add('Elsa.FlowJoin', settings => ); this.add('Elsa.FlowNode', settings => ); this.add('Elsa.SendHttpRequest', settings => ); + this.add("Elsa.Correlate", settings => ) } public add(activityType: ActivityType, icon: ActivityIconProducer) { diff --git a/src/modules/Elsa.Workflows.Core/Activities/Correlate.cs b/src/modules/Elsa.Workflows.Core/Activities/Correlate.cs new file mode 100644 index 000000000..05c2af48b --- /dev/null +++ b/src/modules/Elsa.Workflows.Core/Activities/Correlate.cs @@ -0,0 +1,27 @@ +using System.ComponentModel; +using System.Text.Json.Serialization; +using Elsa.Workflows.Core.Attributes; +using Elsa.Workflows.Core.Models; + +namespace Elsa.Workflows.Core.Activities; + +[Activity("Elsa", "Primitives", "Set the CorrelationId of the workflow to a given value.")] +public class Correlate : Activity +{ + [JsonConstructor] + public Correlate() + { + } + + /// + /// The correlation ID to set. + /// + [Description("An expression that evaluates to the value to store as the correlation id")] + public Input CorrelationId { get; set; } = default!; + + protected override async ValueTask ExecuteAsync(ActivityExecutionContext context) + { + var correlationId = context.Get(CorrelationId); + context.WorkflowExecutionContext.CorrelationId = correlationId; + } +} \ No newline at end of file