Skip to content

Commit 418e108

Browse files
Ticket #16 : Start to implement "Suspend, terminate or reactivate a case instance in the website"
1 parent ac44a40 commit 418e108

File tree

7 files changed

+92
-32
lines changed

7 files changed

+92
-32
lines changed

src/CaseManagement.Website/angularApp/app/casedefinitions/casedefinitions.module.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ import { CaseDefinitionsRoutes } from './casedefinitions.routes';
99
import { ListCaseDefinitionsEffects } from './list/list-effects';
1010
import * as fromListCaseDefinitionsReducer from './list/list-reducer';
1111
import { ListCaseDefinitionsComponent } from './list/list.component';
12+
import { CaseActivationsService } from './services/caseactivations.service';
1213
import { CaseDefinitionsService } from './services/casedefinitions.service';
1314
import { CaseFilesService } from './services/casefiles.service';
1415
import { CaseFormInstancesService } from './services/caseforminstances.service';
1516
import { CaseInstancesService } from './services/caseinstances.service';
16-
import { CaseActivationsService } from './services/caseactivations.service';
1717
import { ViewCaseDefinitionEffects } from './view/view-effects';
1818
import * as fromCaseDefinitionReducer from './view/view-reducer';
1919
import { ViewCaseDefinitionComponent } from './view/view.component';

src/CaseManagement.Website/angularApp/app/casedefinitions/services/caseinstances.service.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,4 +53,32 @@ export class CaseInstancesService {
5353
headers = headers.set('Accept', 'application/json');
5454
return this.http.get(targetUrl, { headers: headers });
5555
}
56+
57+
reactivateCaseInstance(caseInstanceId: string) {
58+
let targetUrl = process.env.API_URL + "/case-instances/" + caseInstanceId + "/reactivate";
59+
let headers = new HttpHeaders();
60+
headers = headers.set('Accept', 'application/json');
61+
return this.http.get(targetUrl, { headers: headers });
62+
}
63+
64+
suspendCaseInstance(caseInstanceId: string) {
65+
let targetUrl = process.env.API_URL + "/case-instances/" + caseInstanceId + "/suspend";
66+
let headers = new HttpHeaders();
67+
headers = headers.set('Accept', 'application/json');
68+
return this.http.get(targetUrl, { headers: headers });
69+
}
70+
71+
resumeCaseInstance(caseInstanceId: string) {
72+
let targetUrl = process.env.API_URL + "/case-instances/" + caseInstanceId + "/resume";
73+
let headers = new HttpHeaders();
74+
headers = headers.set('Accept', 'application/json');
75+
return this.http.get(targetUrl, { headers: headers });
76+
}
77+
78+
closeCaseInstance(caseInstanceId: string) {
79+
let targetUrl = process.env.API_URL + "/case-instances/" + caseInstanceId + "/close";
80+
let headers = new HttpHeaders();
81+
headers = headers.set('Accept', 'application/json');
82+
return this.http.get(targetUrl, { headers: headers });
83+
}
5684
}

src/CaseManagement.Website/angularApp/app/casedefinitions/view/view.component.html

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ <h4 mat-line>{{ "CASE_DEFINITION_FILE" | translate}}</h4>
4747
<div>
4848
<mat-card>
4949
<mat-card-content>
50-
<button mat-raised-button color="primary" (click)="createInstance()">{{ "CREATE_INSTANCE" | translate }}</button>
50+
<button mat-raised-button color="primary" (click)="launchCaseInstance()">{{ "LAUNCH_INSTANCE" | translate }}</button>
5151
<mat-tab-group>
5252
<mat-tab label="{{'CASE_INSTANCES' | translate}}">
5353
<div class="mat-elevation-z8 overflow-hidden">
@@ -73,9 +73,18 @@ <h4 mat-line>{{ "CASE_DEFINITION_FILE" | translate}}</h4>
7373
<ng-container matColumnDef="actions">
7474
<th mat-header-cell *matHeaderCellDef></th>
7575
<td mat-cell *matCellDef="let caseInstance">
76-
<button mat-icon-button (click)="launchCaseInstance(caseInstance)" *ngIf="caseInstance.State == 'Active'">
76+
<button mat-icon-button (click)="reactivateCaseInstance(caseInstance)" *ngIf="caseInstance.State == 'Failed' || caseInstance.State == 'Terminated' || caseInstance.State == 'Completed'">
77+
<mat-icon>cached</mat-icon>
78+
</button>
79+
<button mat-icon-button (click)="suspendCaseInstance(caseInstance)" *ngIf="caseInstance.State == 'Active'">
80+
<mat-icon>stop</mat-icon>
81+
</button>
82+
<button mat-icon-button (click)="resumeCaseInstance(caseInstance)" *ngIf="caseInstance.State == 'Suspended'">
7783
<mat-icon>play_arrow</mat-icon>
7884
</button>
85+
<button mat-icon-button (click)="closeCaseInstance(caseInstance)" *ngIf="caseInstance.State == 'Failed' || caseInstance.State == 'Terminated' || caseInstance.State == 'Completed'">
86+
<mat-icon>close</mat-icon>
87+
</button>
7988
</td>
8089
</ng-container>
8190
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>

src/CaseManagement.Website/angularApp/app/casedefinitions/view/view.component.ts

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@ import { MatPaginator, MatSort } from '@angular/material';
33
import { ActivatedRoute } from '@angular/router';
44
import { select, Store } from '@ngrx/store';
55
import { merge } from 'rxjs';
6+
import { CaseActivation } from '../models/case-activation.model';
67
import { CaseDefinitionHistory, CaseElementDefinitionHistory } from '../models/case-definition-history.model';
78
import { CaseDefinition } from '../models/case-definition.model';
89
import { CaseFormInstance } from '../models/case-form-instance.model';
910
import { CaseInstance } from '../models/case-instance.model';
1011
import { CaseInstancesService } from '../services/caseinstances.service';
1112
import { ActionTypes } from './view-actions';
1213
import * as fromViewCaseDefStates from './view-states';
13-
import { CaseActivation } from '../models/case-activation.model';
1414
let CmmnViewer = require('cmmn-js/lib/NavigatedViewer');
1515

1616
@Component({
@@ -154,14 +154,34 @@ export class ViewCaseDefinitionComponent implements OnInit, OnDestroy {
154154
}
155155
}
156156

157-
createInstance() {
158-
this.caseInstancesService.create(this.route.snapshot.params['id']).subscribe(() => {
157+
launchCaseInstance() {
158+
this.caseInstancesService.create(this.route.snapshot.params['id']).subscribe((caseInstance: CaseInstance) => {
159+
this.caseInstancesService.launch(caseInstance.Id).subscribe(() => {
160+
this.refresh();
161+
});
162+
});
163+
}
164+
165+
reactivateCaseInstance(caseInstance: CaseInstance) {
166+
this.caseInstancesService.reactivateCaseInstance(caseInstance.Id).subscribe(() => {
167+
this.refresh();
168+
});
169+
}
170+
171+
suspendCaseInstance(caseInstance: CaseInstance) {
172+
this.caseInstancesService.suspendCaseInstance(caseInstance.Id).subscribe(() => {
173+
this.refresh();
174+
});
175+
}
176+
177+
resumeCaseInstance(caseInstance: CaseInstance) {
178+
this.caseInstancesService.resumeCaseInstance(caseInstance.Id).subscribe(() => {
159179
this.refresh();
160180
});
161181
}
162182

163-
launchCaseInstance(caseInstance: CaseInstance) {
164-
this.caseInstancesService.launch(caseInstance.Id).subscribe(() => {
183+
closeCaseInstance(caseInstance: CaseInstance) {
184+
this.caseInstancesService.closeCaseInstance(caseInstance.Id).subscribe(() => {
165185
this.refresh();
166186
});
167187
}

src/CaseManagement.Website/angularApp/app/home/components/home.component.ts

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { select, Store } from '@ngrx/store';
33
import { DailyStatistic } from '../models/dailystatistic.model';
44
import { ActionTypes } from './home-actions';
55
import * as fromHomeSates from './home-states';
6+
import { DatePipe } from '@angular/common';
67

78
@Component({
89
selector: 'app-home-component',
@@ -162,9 +163,10 @@ export class HomeComponent implements OnInit, OnDestroy {
162163
"series": []
163164
}
164165
];
165-
constructor(private statisticStore: Store<fromHomeSates.StatisticState>, private weekStatisticStore: Store<fromHomeSates.WeekStatisticsState>, private monthStatisticStore: Store<fromHomeSates.MonthStatisticsState>) { }
166+
constructor(private statisticStore: Store<fromHomeSates.StatisticState>, private weekStatisticStore: Store<fromHomeSates.WeekStatisticsState>, private monthStatisticStore: Store<fromHomeSates.MonthStatisticsState>, private datePipe: DatePipe) { }
166167

167168
ngOnInit() {
169+
let self = this;
168170
this.statisticSubscription = this.statisticStore.pipe(select('statistic')).subscribe((st: fromHomeSates.StatisticState) => {
169171
if (!st) {
170172
return;
@@ -273,43 +275,43 @@ export class HomeComponent implements OnInit, OnDestroy {
273275
];
274276
st.content.Content.forEach(function (elt: DailyStatistic) {
275277
caseWeekResult[0].series.push({
276-
"name": elt.DateTime,
278+
"name": self.datePipe.transform(elt.DateTime, 'mediumDate'),
277279
"value": elt.NbActiveCases
278280
});
279281
caseWeekResult[1].series.push({
280-
"name": elt.DateTime,
282+
"name": self.datePipe.transform(elt.DateTime, 'mediumDate'),
281283
"value": elt.NbCompletedCases
282284
});
283285
caseWeekResult[2].series.push({
284-
"name": elt.DateTime,
286+
"name": self.datePipe.transform(elt.DateTime, 'mediumDate'),
285287
"value": elt.NbTerminatedCases
286288
});
287289
caseWeekResult[3].series.push({
288-
"name": elt.DateTime,
290+
"name": self.datePipe.transform(elt.DateTime, 'mediumDate'),
289291
"value": elt.NbFailedCases
290292
});
291293
caseWeekResult[4].series.push({
292-
"name": elt.DateTime,
294+
"name": self.datePipe.transform(elt.DateTime, 'mediumDate'),
293295
"value": elt.NbSuspendedCases
294296
});
295297
caseWeekResult[5].series.push({
296-
"name": elt.DateTime,
298+
"name": self.datePipe.transform(elt.DateTime, 'mediumDate'),
297299
"value": elt.NbClosedCases
298300
});
299301
formWeekResult[0].series.push({
300-
"name": elt.DateTime,
302+
"name": self.datePipe.transform(elt.DateTime, 'mediumDate'),
301303
"value": elt.NbCreatedForms
302304
});
303305
formWeekResult[1].series.push({
304-
"name": elt.DateTime,
306+
"name": self.datePipe.transform(elt.DateTime, 'mediumDate'),
305307
"value": elt.NbConfirmedForms
306308
});
307309
activationWeekResult[0].series.push({
308-
"name": elt.DateTime,
310+
"name": self.datePipe.transform(elt.DateTime, 'mediumDate'),
309311
"value": elt.NbCreatedForms
310312
});
311313
activationWeekResult[1].series.push({
312-
"name": elt.DateTime,
314+
"name": self.datePipe.transform(elt.DateTime, 'mediumDate'),
313315
"value": elt.NbConfirmedForms
314316
});
315317
});
@@ -373,43 +375,43 @@ export class HomeComponent implements OnInit, OnDestroy {
373375
];
374376
st.content.Content.forEach(function (elt: DailyStatistic) {
375377
caseMonthResult[0].series.push({
376-
"name": elt.DateTime,
378+
"name": self.datePipe.transform(elt.DateTime, 'mediumDate'),
377379
"value": elt.NbActiveCases
378380
});
379381
caseMonthResult[1].series.push({
380-
"name": elt.DateTime,
382+
"name": self.datePipe.transform(elt.DateTime, 'mediumDate'),
381383
"value": elt.NbCompletedCases
382384
});
383385
caseMonthResult[2].series.push({
384-
"name": elt.DateTime,
386+
"name": self.datePipe.transform(elt.DateTime, 'mediumDate'),
385387
"value": elt.NbTerminatedCases
386388
});
387389
caseMonthResult[3].series.push({
388-
"name": elt.DateTime,
390+
"name": self.datePipe.transform(elt.DateTime, 'mediumDate'),
389391
"value": elt.NbFailedCases
390392
});
391393
caseMonthResult[4].series.push({
392-
"name": elt.DateTime,
394+
"name": self.datePipe.transform(elt.DateTime, 'mediumDate'),
393395
"value": elt.NbSuspendedCases
394396
});
395397
caseMonthResult[5].series.push({
396-
"name": elt.DateTime,
398+
"name": self.datePipe.transform(elt.DateTime, 'mediumDate'),
397399
"value": elt.NbClosedCases
398400
});
399401
formMonthResult[0].series.push({
400-
"name": elt.DateTime,
402+
"name": self.datePipe.transform(elt.DateTime, 'mediumDate'),
401403
"value": elt.NbCreatedForms
402404
});
403405
formMonthResult[1].series.push({
404-
"name": elt.DateTime,
406+
"name": self.datePipe.transform(elt.DateTime, 'mediumDate'),
405407
"value": elt.NbConfirmedForms
406408
});
407409
activationMonthResult[0].series.push({
408-
"name": elt.DateTime,
410+
"name": self.datePipe.transform(elt.DateTime, 'mediumDate'),
409411
"value": elt.NbCreatedForms
410412
});
411413
activationMonthResult[1].series.push({
412-
"name": elt.DateTime,
414+
"name": self.datePipe.transform(elt.DateTime, 'mediumDate'),
413415
"value": elt.NbConfirmedForms
414416
});
415417
});

src/CaseManagement.Website/angularApp/app/home/home.module.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { CommonModule } from '@angular/common';
1+
import { CommonModule, DatePipe } from '@angular/common';
22
import { HttpClientModule } from '@angular/common/http';
33
import { NgModule } from '@angular/core';
44
import { FormsModule } from '@angular/forms';
@@ -43,7 +43,8 @@ import { StatisticService } from './services/statistic.service';
4343
],
4444

4545
providers: [
46-
StatisticService
46+
StatisticService,
47+
DatePipe
4748
]
4849
})
4950

src/CaseManagement.Workflow/Infrastructure/Bus/BaseMessageConsumer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,9 @@ public virtual async void Handle()
3838
var token = CancellationTokenSource.Token;
3939
while (!token.IsCancellationRequested)
4040
{
41+
await Task.Delay(Options.IdleTimeInMs);
4142
if (TaskPool.NbTasks() > Options.MaxConcurrentTask)
4243
{
43-
await Task.Delay(Options.IdleTimeInMs);
4444
continue;
4545
}
4646

0 commit comments

Comments
 (0)