diff options
author | Lvbo163 <lv.bo163@zte.com.cn> | 2017-09-06 17:31:15 +0800 |
---|---|---|
committer | Lvbo163 <lv.bo163@zte.com.cn> | 2017-09-06 17:31:15 +0800 |
commit | b8932e8304ed077912949890c3ec47a087be7ddd (patch) | |
tree | 7ac38d7bed907a3ca60e26c307bda953051a114a /sdc-workflow-designer-ui/src/app/services/workflow.service.ts | |
parent | 15f0e4fa63bb1fd533091d9ab85d3612752c2d27 (diff) |
paramters can quote input parameter of start event
rest task input parameters can quote input parameters of start event
Issue-ID: SDC-122
Change-Id: I0cda0f1967514ac90e377b2f054ddf2cef011694
Signed-off-by: Lvbo163 <lv.bo163@zte.com.cn>
Diffstat (limited to 'sdc-workflow-designer-ui/src/app/services/workflow.service.ts')
-rw-r--r-- | sdc-workflow-designer-ui/src/app/services/workflow.service.ts | 55 |
1 files changed, 55 insertions, 0 deletions
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 3a6c5df1..4bcd43b0 100644 --- a/sdc-workflow-designer-ui/src/app/services/workflow.service.ts +++ b/sdc-workflow-designer-ui/src/app/services/workflow.service.ts @@ -20,6 +20,7 @@ import { NodeType } from "../model/workflow/node-type.enum"; import { StartEvent } from "../model/workflow/start-event";
import { SequenceFlow } from "../model/workflow/sequence-flow";
import { RestTask } from "../model/workflow/rest-task";
+import { PlanTreeviewItem } from "../model/plan-treeview-item";
/**
* WorkflowService
@@ -92,6 +93,60 @@ export class WorkflowService { }
}
+ public getPlanParameters(nodeId: string): PlanTreeviewItem[] {
+ const preNodeList = new Array<WorkflowNode>();
+ this.getPreNodes(nodeId, preNodeList);
+
+ return this.loadNodeOutputs(preNodeList);
+ }
+
+ private loadNodeOutputs(nodes: WorkflowNode[]): PlanTreeviewItem[] {
+ const params = new Array<PlanTreeviewItem>();
+ nodes.forEach(node => {
+ switch (node.type) {
+ case NodeType[NodeType.startEvent]:
+ params.push(this.loadOutput4StartEvent(<StartEvent>node));
+ break;
+ case NodeType[NodeType.restTask]:
+ // TODO for rest task
+ break;
+ default:
+ break;
+ }
+ });
+
+ return params;
+ }
+
+ private loadOutput4StartEvent(node: StartEvent): PlanTreeviewItem {
+ const startItem = new PlanTreeviewItem(node.name, `[${node.id}]`, []);
+ node.parameters.map(param =>
+ startItem.children.push(new PlanTreeviewItem(param.name, `[${param.name}]`, [])));
+ return startItem;
+ }
+
+ public getPreNodes(nodeId: string, preNodes: WorkflowNode[]) {
+ const preNode4CurrentNode = [];
+ this.workflow.nodes.forEach(node => {
+ if (this.isPreNode(node, nodeId)) {
+ const existNode = preNodes.find(tmpNode => tmpNode.id === node.id);
+ if (existNode) {
+ // current node already exists in preNodes. this could avoid loop circle.
+ } else {
+ preNode4CurrentNode.push(node);
+ preNodes.push(node);
+ }
+ }
+ });
+
+ preNode4CurrentNode.forEach(node => this.getPreNodes(node.id, preNodes));
+ }
+
+ public isPreNode(preNode: WorkflowNode, id: string): boolean {
+ const targetNode = preNode.sequenceFlows.find(connection => connection.targetRef === id);
+ return targetNode !== undefined;
+ }
+
public getNodeById(sourceId: string): WorkflowNode {
return this.workflow.nodes.find(node => node.id === sourceId);
}
|