From 626d74e4c51aa47da5d5d643b5b7a04188b5552a Mon Sep 17 00:00:00 2001 From: Lvbo163 Date: Thu, 31 Aug 2017 14:29:07 +0800 Subject: support set parameter for workflow support set input and output params for start event Issue-ID: SDC-120 Change-Id: Ib5a87692e06817b2676b3f2f2223e1ced117b5c9 Signed-off-by: Lvbo163 --- .../src/app/services/workflow.service.ts | 43 ++++++++++++++++++++-- 1 file changed, 40 insertions(+), 3 deletions(-) (limited to 'sdc-workflow-designer-ui/src/app/services/workflow.service.ts') diff --git a/sdc-workflow-designer-ui/src/app/services/workflow.service.ts b/sdc-workflow-designer-ui/src/app/services/workflow.service.ts index d9a949ea..a36b51ad 100644 --- a/sdc-workflow-designer-ui/src/app/services/workflow.service.ts +++ b/sdc-workflow-designer-ui/src/app/services/workflow.service.ts @@ -11,10 +11,14 @@ */ import { Injectable } from '@angular/core'; -import { WorkflowNode } from "../model/workflow-node"; +import { WorkflowNode } from "../model/workflow/workflow-node"; import { DataAccessService } from "./data-access/data-access.service"; import { Observable } from "rxjs/Observable"; -import { Workflow } from "../model/workflow"; +import { Workflow } from "../model/workflow/workflow"; +import { Position } from "../model/workflow/position"; +import { NodeType } from "../model/workflow/node-type.enum"; +import { StartEvent } from "../model/workflow/start-event"; +import { SequenceFlow } from "../model/workflow/sequence-flow"; /** * WorkflowService @@ -34,22 +38,55 @@ export class WorkflowService { } public addNode(name: string, type: string, top: number, left: number): WorkflowNode { - const node = new WorkflowNode(this.createId(), name, type, top, left); + let node: WorkflowNode; + switch (type) { + case NodeType[NodeType.startEvent]: + node = new StartEvent(this.createId(), name, type, new Position(top, left), []); + break; + default: + node = new WorkflowNode(this.createId(), name, type, new Position(top, left), []); + break; + } + this.workflow.nodes.push(node); return node; } public deleteNode(nodeId: string): WorkflowNode { + // delete related connections + this.workflow.nodes.forEach(node => this.deleteSequenceFlow(node.id, nodeId)); + // delete current node const index = this.workflow.nodes.findIndex(node => node.id === nodeId); if (index !== -1) { const node = this.workflow.nodes.splice(index, 1)[0]; + node.sequenceFlows = []; return node; } return undefined; } + public addSequenceFlow(sourceId: string, targetId: string) { + const node = this.getNodeById(sourceId); + if (node) { + const index = node.sequenceFlows.findIndex(sequenceFlow => sequenceFlow.targetRef === targetId); + if (index === -1) { + node.sequenceFlows.push(new SequenceFlow(sourceId, targetId)); + } + } + } + + public deleteSequenceFlow(sourceId: string, targetId: string) { + const node = this.getNodeById(sourceId); + if (node) { + const index = node.sequenceFlows.findIndex(sequenceFlow => sequenceFlow.targetRef === targetId); + if (index !== -1) { + node.sequenceFlows.splice(index, 1); + } + } + } + public getNodeById(sourceId: string): WorkflowNode { return this.workflow.nodes.find(node => node.id === sourceId); } -- cgit 1.2.3-korg