support bpmn timer element 71/10971/1
authorLvbo163 <lv.bo163@zte.com.cn>
Fri, 8 Sep 2017 01:40:56 +0000 (09:40 +0800)
committerLvbo163 <lv.bo163@zte.com.cn>
Fri, 8 Sep 2017 01:43:17 +0000 (09:43 +0800)
support bpmn intermediate-catch-event timer element for duration and date

Issue-ID: SDC-294

Change-Id: I27ba61f7d3ad6e3fa41579a643805f07da78628c
Signed-off-by: Lvbo163 <lv.bo163@zte.com.cn>
sdc-workflow-designer-ui/src/app/app.module.ts
sdc-workflow-designer-ui/src/app/components/property/intermediate-catch-event/intermediate-catch-event.component.html [new file with mode: 0644]
sdc-workflow-designer-ui/src/app/components/property/intermediate-catch-event/intermediate-catch-event.component.ts [new file with mode: 0644]
sdc-workflow-designer-ui/src/app/components/property/properties.component.html
sdc-workflow-designer-ui/src/app/model/workflow/intermediate-catch-event.ts [new file with mode: 0644]
sdc-workflow-designer-ui/src/app/model/workflow/timer-event-definition.ts [new file with mode: 0644]
sdc-workflow-designer-ui/src/app/services/workflow-process.service.ts

index 047f468..6fa65af 100644 (file)
@@ -43,12 +43,14 @@ import { ParameterTreeComponent } from "./components/parameter-tree/parameter-tr
 import { EditablePropertyComponent } from "./components/editable-property/editable-property.component";
 import { SwaggerTreeConverterService } from "./services/swagger-tree-converter.service";
 import { WorkflowProcessService } from "./services/workflow-process.service";
+import { IntermediateCatchEventComponent } from "./components/property/intermediate-catch-event/intermediate-catch-event.component";
 
 @NgModule({
     declarations: [
         AppComponent,
         CanvasComponent,
         EditablePropertyComponent,
+        IntermediateCatchEventComponent,
         MenuComponent,
         MicroserviceComponent,
         MicroserviceDetailComponent,
diff --git a/sdc-workflow-designer-ui/src/app/components/property/intermediate-catch-event/intermediate-catch-event.component.html b/sdc-workflow-designer-ui/src/app/components/property/intermediate-catch-event/intermediate-catch-event.component.html
new file mode 100644 (file)
index 0000000..f615d9f
--- /dev/null
@@ -0,0 +1,45 @@
+<!--
+/*******************************************************************************
+ * Copyright (c) 2017 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * and the Apache License 2.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+-->
+
+<div class="form-group row">
+    <label class="col-md-3 form-control-label text-md-right">Timer Type</label>
+    <div class="col-md-9">
+        <p-radioButton name="timeType" label="Duration" value="timeDuration" [ngModel]="node.timerEventDefinition.type" (ngModelChange)="timerTypeChange($event)">Duration</p-radioButton>
+        <p-radioButton name="timeType" label="Date" value="timeDate" [(ngModel)]="node.timerEventDefinition.type">Date</p-radioButton>
+        <p-radioButton name="timeType" label="Cycle" value="timeCycle" [(ngModel)]="node.timerEventDefinition.type">Cycle</p-radioButton>
+    </div>
+</div>
+
+<div *ngIf="node.timerEventDefinition.type === 'timeDuration'" class="form-group row">
+    <label class="col-md-3 form-control-label text-md-right">Duration</label>
+    <div class="col-md-9">
+        <input type="text" class="form-control" [(ngModel)]="node.timerEventDefinition.timeDuration">
+        <label>eg: P1Y3M5DT6H7M30S</label>
+    </div>
+</div>
+
+<div *ngIf="node.timerEventDefinition.type === 'timeDate'" class="form-group row">
+    <label class="col-md-3 form-control-label text-md-right">Date</label>
+    <div class="col-md-9">
+        <input type="text" class="form-control" [(ngModel)]="node.timerEventDefinition.timeDate">
+        <label>eg: 10/10/2099 00:00:03</label>
+    </div>
+</div>
+
+<div *ngIf="node.timerEventDefinition.type === 'timeCycle'" class="form-group row">
+    <label class="col-md-3 form-control-label text-md-right">Cycle</label>
+    <div class="col-md-9">
+        <input type="text"  class="form-control" [(ngModel)]="node.timerEventDefinition.timeCycle">
+    </div>
+</div>
diff --git a/sdc-workflow-designer-ui/src/app/components/property/intermediate-catch-event/intermediate-catch-event.component.ts b/sdc-workflow-designer-ui/src/app/components/property/intermediate-catch-event/intermediate-catch-event.component.ts
new file mode 100644 (file)
index 0000000..e8e2c78
--- /dev/null
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2017 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * and the Apache License 2.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+import { AfterViewInit, Component, Input } from '@angular/core';
+import { Subscription } from 'rxjs/Subscription';
+
+import {IntermediateCatchEvent} from '../../../model/workflow/intermediate-catch-event';
+
+@Component({
+    selector: 'b4t-intermediate-catch-event',
+    templateUrl: 'intermediate-catch-event.component.html',
+})
+export class IntermediateCatchEventComponent {
+    @Input() public node: IntermediateCatchEvent;
+
+    public timerTypeChange(type: string) {
+        const timer = this.node.timerEventDefinition;
+        timer.type = type;
+        timer.timeCycle = '';
+        timer.timeDate = '';
+        timer.timeDuration = '';
+    }
+}
index bcc63dd..86a6782 100644 (file)
@@ -41,4 +41,5 @@
 
     <b4t-start-event-parameters *ngIf="'startEvent' == node.type" [node]="node"></b4t-start-event-parameters>
     <b4t-rest-task *ngIf="node.type == 'restTask'" [node]="node" [planItems]="planItems"></b4t-rest-task>
+    <b4t-intermediate-catch-event *ngIf="'intermediateCatchEvent' == node.type" [node]="node"></b4t-intermediate-catch-event>
 </div>
diff --git a/sdc-workflow-designer-ui/src/app/model/workflow/intermediate-catch-event.ts b/sdc-workflow-designer-ui/src/app/model/workflow/intermediate-catch-event.ts
new file mode 100644 (file)
index 0000000..13a3d1e
--- /dev/null
@@ -0,0 +1,18 @@
+/**
+ * Copyright (c) 2017 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * and the Apache License 2.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+import { TimerEventDefinition, TimerEventDefinitionType } from './timer-event-definition';
+import { WorkflowNode } from './workflow-node';
+
+export class IntermediateCatchEvent extends WorkflowNode {
+    public timerEventDefinition: TimerEventDefinition =
+        new TimerEventDefinition(TimerEventDefinitionType[TimerEventDefinitionType.timeDuration]);
+}
diff --git a/sdc-workflow-designer-ui/src/app/model/workflow/timer-event-definition.ts b/sdc-workflow-designer-ui/src/app/model/workflow/timer-event-definition.ts
new file mode 100644 (file)
index 0000000..f78d397
--- /dev/null
@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) 2017 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * and the Apache License 2.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+import { WorkflowNode } from './workflow-node';
+
+export enum TimerEventDefinitionType {
+    timeDate,
+    timeDuration,
+    timeCycle,
+}
+
+export class TimerEventDefinition {
+    constructor(public type: string, // 'timeDate',  'timeCycle', 'timeDuration'
+        public timeDate?: string, // <timeDate>10/10/2099 00:00:00</timeDate>
+        public timeDuration?: string, // ISO 8601  P1Y3M5DT6H7M30S
+        public timeCycle?: string) { // ISO 8601  P1Y3M5DT6H7M30S
+
+    }
+}
index 4c701ec..963a10b 100644 (file)
@@ -22,6 +22,7 @@ import { PlanTreeviewItem } from "../model/plan-treeview-item";
 import { WorkflowConfigService } from "./workflow-config.service";\r
 import { Swagger, SwaggerModelSimple, SwaggerReferenceObject } from "../model/swagger";\r
 import { WorkflowService } from "./workflow.service";\r
+import { IntermediateCatchEvent } from "../model/workflow/intermediate-catch-event";\r
 \r
 /**\r
  * WorkflowService\r
@@ -47,6 +48,9 @@ export class WorkflowProcessService {
             case NodeType[NodeType.restTask]:\r
                 node = new RestTask(this.createId(), name, type, new Position(top, left), []);\r
                 break;\r
+            case NodeType[NodeType.intermediateCatchEvent]:\r
+                node = new IntermediateCatchEvent(this.createId(), name, type, new Position(top, left), []);\r
+                break;\r
             default:\r
                 node = new WorkflowNode(this.createId(), name, type, new Position(top, left), []);\r
                 break;\r