diff --git a/src/designer/elsa-workflows-studio/src/components/screens/workflow-blueprint-viewer/elsa-workflow-blueprint-viewer-screen/elsa-workflow-blueprint-viewer-screen.tsx b/src/designer/elsa-workflows-studio/src/components/screens/workflow-blueprint-viewer/elsa-workflow-blueprint-viewer-screen/elsa-workflow-blueprint-viewer-screen.tsx index e7253fae9..47ea5acff 100644 --- a/src/designer/elsa-workflows-studio/src/components/screens/workflow-blueprint-viewer/elsa-workflow-blueprint-viewer-screen/elsa-workflow-blueprint-viewer-screen.tsx +++ b/src/designer/elsa-workflows-studio/src/components/screens/workflow-blueprint-viewer/elsa-workflow-blueprint-viewer-screen/elsa-workflow-blueprint-viewer-screen.tsx @@ -108,9 +108,15 @@ export class ElsaWorkflowBlueprintViewerScreen { } mapActivityModel(source: ActivityBlueprint): ActivityModel { - const descriptors: Array = state.activityDescriptors; - const descriptor = descriptors.find(x => x.type == source.type); - const properties: Array = collection.map(source.properties.data, (v, k) => ({name: k, expressions: {'Literal': v}, syntax: SyntaxNames.Literal})); + const activityDescriptors: Array = state.activityDescriptors; + const activityDescriptor = activityDescriptors.find(x => x.type == source.type); + const properties: Array = collection.map(source.properties.data, (value, key) => { + const propertyDescriptor = activityDescriptor.properties.find(x => x.name == key); + const defaultSyntax = propertyDescriptor.defaultSyntax || SyntaxNames.Literal; + const expressions = {}; + expressions[defaultSyntax] = value; + return ({name: key, expressions: expressions, syntax: defaultSyntax}); + }); return { activityId: source.id, @@ -119,7 +125,7 @@ export class ElsaWorkflowBlueprintViewerScreen { name: source.name, type: source.type, properties: properties, - outcomes: [...descriptor.outcomes], + outcomes: [...activityDescriptor.outcomes], persistOutput: source.persistOutput, persistWorkflow: source.persistWorkflow, saveWorkflowContext: source.saveWorkflowContext, diff --git a/src/designer/elsa-workflows-studio/src/components/screens/workflow-instance-viewer/elsa-workflow-instance-viewer-screen/elsa-workflow-instance-viewer-screen.tsx b/src/designer/elsa-workflows-studio/src/components/screens/workflow-instance-viewer/elsa-workflow-instance-viewer-screen/elsa-workflow-instance-viewer-screen.tsx index fbd146bfb..16390757a 100644 --- a/src/designer/elsa-workflows-studio/src/components/screens/workflow-instance-viewer/elsa-workflow-instance-viewer-screen/elsa-workflow-instance-viewer-screen.tsx +++ b/src/designer/elsa-workflows-studio/src/components/screens/workflow-instance-viewer/elsa-workflow-instance-viewer-screen/elsa-workflow-instance-viewer-screen.tsx @@ -143,9 +143,15 @@ export class ElsaWorkflowInstanceViewerScreen { } mapActivityModel(source: ActivityBlueprint): ActivityModel { - const descriptors: Array = state.activityDescriptors; - const descriptor = descriptors.find(x => x.type == source.type); - const properties: Array = collection.map(source.properties.data, (v, k) => ({name: k, expressions: {'Literal': v}, syntax: SyntaxNames.Literal})); + const activityDescriptors: Array = state.activityDescriptors; + const activityDescriptor = activityDescriptors.find(x => x.type == source.type); + const properties: Array = collection.map(source.properties.data, (value, key) => { + const propertyDescriptor = activityDescriptor.properties.find(x => x.name == key); + const defaultSyntax = propertyDescriptor.defaultSyntax || SyntaxNames.Literal; + const expressions = {}; + expressions[defaultSyntax] = value; + return ({name: key, expressions: expressions, syntax: defaultSyntax}); + }); return { activityId: source.id, @@ -154,7 +160,7 @@ export class ElsaWorkflowInstanceViewerScreen { name: source.name, type: source.type, properties: properties, - outcomes: [...descriptor.outcomes], + outcomes: [...activityDescriptor.outcomes], persistOutput: source.persistOutput, persistWorkflow: source.persistWorkflow, saveWorkflowContext: source.saveWorkflowContext, diff --git a/src/designer/elsa-workflows-studio/src/plugins/fork-plugin.tsx b/src/designer/elsa-workflows-studio/src/plugins/fork-plugin.tsx index 8481ea1bd..218d9a85b 100644 --- a/src/designer/elsa-workflows-studio/src/plugins/fork-plugin.tsx +++ b/src/designer/elsa-workflows-studio/src/plugins/fork-plugin.tsx @@ -11,14 +11,14 @@ export class ForkPlugin implements ElsaPlugin { onActivityDesignDisplaying(context: ActivityDesignDisplayContext) { const activityModel = context.activityModel; - + if (activityModel.type !== 'Fork') return; const props = activityModel.properties || []; const syntax = SyntaxNames.Json; - const branches = props.find(x => x.name == 'Branches') || { expressions: {'Json': '[]'}, syntax: syntax }; + const branches = props.find(x => x.name == 'Branches') || {expressions: {'Json': '[]'}, syntax: syntax}; const expression = branches.expressions[syntax]; - context.outcomes = parseJson(expression) || []; + context.outcomes = !!expression['$values'] ? expression['$values'] : parseJson(expression) || []; } }