From 7aae03a2dc8939c2135c2ea77b6c0e930d824af7 Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Fri, 28 May 2021 20:40:38 +0200 Subject: [PATCH] Implement User Task plugin Fixes #351 --- .../src/plugins/user-task-plugin.tsx | 24 +++++++++++++++++++ .../src/services/plugin-manager.ts | 2 ++ 2 files changed, 26 insertions(+) create mode 100644 src/designer/elsa-workflows-studio/src/plugins/user-task-plugin.tsx diff --git a/src/designer/elsa-workflows-studio/src/plugins/user-task-plugin.tsx b/src/designer/elsa-workflows-studio/src/plugins/user-task-plugin.tsx new file mode 100644 index 000000000..a36b6234d --- /dev/null +++ b/src/designer/elsa-workflows-studio/src/plugins/user-task-plugin.tsx @@ -0,0 +1,24 @@ +import {ElsaPlugin} from "../services/elsa-plugin"; +import {eventBus} from '../services/event-bus'; +import {ActivityDesignDisplayContext, EventTypes, SyntaxNames} from "../models"; +import {h} from "@stencil/core"; +import {parseJson} from "../utils/utils"; + +export class UserTaskPlugin implements ElsaPlugin { + constructor() { + eventBus.on(EventTypes.ActivityDesignDisplaying, this.onActivityDesignDisplaying); + } + + onActivityDesignDisplaying(context: ActivityDesignDisplayContext) { + const activityModel = context.activityModel; + + if (activityModel.type !== 'UserTask') + return; + + const props = activityModel.properties || []; + const syntax = SyntaxNames.Json; + const branches = props.find(x => x.name == 'Actions') || {expressions: {'Json': '[]'}, syntax: syntax}; + const expression = branches.expressions[syntax]; + context.outcomes = !!expression['$values'] ? expression['$values'] : parseJson(expression) || []; + } +} diff --git a/src/designer/elsa-workflows-studio/src/services/plugin-manager.ts b/src/designer/elsa-workflows-studio/src/services/plugin-manager.ts index 5944f0ab2..7684d3c78 100644 --- a/src/designer/elsa-workflows-studio/src/services/plugin-manager.ts +++ b/src/designer/elsa-workflows-studio/src/services/plugin-manager.ts @@ -14,6 +14,7 @@ import {StartAtPlugin} from "../plugins/start-at-plugin"; import {CronPlugin} from "../plugins/cron-plugin"; import {SignalReceivedPlugin} from "../plugins/signal-received-plugin"; import {SendSignalPlugin} from "../plugins/send-signal-plugin"; +import {UserTaskPlugin} from "../plugins/user-task-plugin"; export class PluginManager { @@ -35,6 +36,7 @@ export class PluginManager { new SendSignalPlugin(), new WriteLinePlugin(), new RunJavascriptPlugin(), + new UserTaskPlugin(), new SendEmailPlugin() ]; }