From 4f22a4da14b001cbc7cb716900fc46deeed4949f Mon Sep 17 00:00:00 2001 From: Will Abson Date: Thu, 10 Nov 2016 15:52:23 +0000 Subject: [PATCH] Reload processlist after starting new process Refs #1036 --- .../activiti/activiti-demo.component.html | 2 +- .../activiti/activiti-demo.component.ts | 11 ++++++--- .../activiti-processlist.component.ts | 7 ++++++ .../activiti-start-process.component.spec.ts | 23 +++++++++++++++---- .../activiti-start-process.component.ts | 12 ++++++---- 5 files changed, 43 insertions(+), 12 deletions(-) diff --git a/demo-shell-ng2/app/components/activiti/activiti-demo.component.html b/demo-shell-ng2/app/components/activiti/activiti-demo.component.html index ff099b246a..9c5d520f03 100644 --- a/demo-shell-ng2/app/components/activiti/activiti-demo.component.html +++ b/demo-shell-ng2/app/components/activiti/activiti-demo.component.html @@ -58,7 +58,7 @@
Process Filters - + diff --git a/demo-shell-ng2/app/components/activiti/activiti-demo.component.ts b/demo-shell-ng2/app/components/activiti/activiti-demo.component.ts index 012fb544a9..2f80dfbf57 100644 --- a/demo-shell-ng2/app/components/activiti/activiti-demo.component.ts +++ b/demo-shell-ng2/app/components/activiti/activiti-demo.component.ts @@ -22,6 +22,7 @@ import { ActivitiApps, ActivitiTaskList } from 'ng2-activiti-tasklist'; +import { ActivitiProcessInstanceListComponent } from 'ng2-activiti-processlist'; import { ActivatedRoute } from '@angular/router'; import { Subscription } from 'rxjs/Rx'; import { @@ -49,14 +50,14 @@ export class ActivitiDemoComponent implements AfterViewChecked { @ViewChild('activitidetails') activitidetails: any; - @ViewChild('activititasklist') + @ViewChild(ActivitiTaskList) activititasklist: ActivitiTaskList; @ViewChild('activitiprocessfilter') activitiprocessfilter: any; - @ViewChild('activitiprocesslist') - activitiprocesslist: any; + @ViewChild(ActivitiProcessInstanceListComponent) + activitiprocesslist: ActivitiProcessInstanceListComponent; @ViewChild('activitiprocessdetails') activitiprocessdetails: any; @@ -176,6 +177,10 @@ export class ActivitiDemoComponent implements AfterViewChecked { this.currentProcessInstanceId = processInstanceId; } + onStartProcessInstance() { + this.activitiprocesslist.reload(); + } + processCancelled(data: any) { this.currentProcessInstanceId = null; this.activitiprocesslist.reload(); diff --git a/ng2-components/ng2-activiti-processlist/src/components/activiti-processlist.component.ts b/ng2-components/ng2-activiti-processlist/src/components/activiti-processlist.component.ts index 2146a0a345..0ddac7d749 100644 --- a/ng2-components/ng2-activiti-processlist/src/components/activiti-processlist.component.ts +++ b/ng2-components/ng2-activiti-processlist/src/components/activiti-processlist.component.ts @@ -111,6 +111,13 @@ export class ActivitiProcessInstanceListComponent implements OnInit, OnChanges { }); } + public reload() { + if (this.filter) { + let requestNode = this.convertProcessInstanceToTaskQuery(this.filter); + this.load(requestNode); + } + } + /** * Create an array of ObjectDataRow * @param processes diff --git a/ng2-components/ng2-activiti-processlist/src/components/activiti-start-process.component.spec.ts b/ng2-components/ng2-activiti-processlist/src/components/activiti-start-process.component.spec.ts index 9a6d3b2d66..697772e55e 100644 --- a/ng2-components/ng2-activiti-processlist/src/components/activiti-start-process.component.spec.ts +++ b/ng2-components/ng2-activiti-processlist/src/components/activiti-start-process.component.spec.ts @@ -37,6 +37,11 @@ describe('ActivitiStartProcessButton', () => { let startProcessSpy: jasmine.Spy; let debugElement: DebugElement; + let newProcess = { + id: '32323', + name: 'Process' + }; + beforeEach(async(() => { TestBed.configureTestingModule({ imports: [ CoreModule, ActivitiFormModule ], @@ -66,10 +71,7 @@ describe('ActivitiStartProcessButton', () => { id: 'my:process2', name: 'My Process 2' }])); - startProcessSpy = spyOn(processService, 'startProcess').and.returnValue(Observable.of({ - id: '32323', - name: 'Process' - })); + startProcessSpy = spyOn(processService, 'startProcess').and.returnValue(Observable.of(newProcess)); componentHandler = jasmine.createSpyObj('componentHandler', [ 'upgradeAllRegistered', @@ -128,6 +130,19 @@ describe('ActivitiStartProcessButton', () => { }); }); + it('should output start event when process started successfully', (done) => { + let emitSpy = spyOn(component.start, 'emit'); + component.name = 'My new process'; + component.processDefinitionId = 'my:process1'; + component.showDialog(); + fixture.detectChanges(); + component.startProcess(); + fixture.whenStable().then(() => { + expect(emitSpy).toHaveBeenCalledWith(newProcess); + done(); + }); + }); + it('should indicate start form is missing when process does not have a start form', (done) => { component.name = 'My new process'; component.processDefinitionId = 'my:process1'; diff --git a/ng2-components/ng2-activiti-processlist/src/components/activiti-start-process.component.ts b/ng2-components/ng2-activiti-processlist/src/components/activiti-start-process.component.ts index 574e67479d..4c8179216a 100644 --- a/ng2-components/ng2-activiti-processlist/src/components/activiti-start-process.component.ts +++ b/ng2-components/ng2-activiti-processlist/src/components/activiti-start-process.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { Component, Input, OnInit, ViewChild, DebugElement, OnChanges, SimpleChanges } from '@angular/core'; +import { Component, EventEmitter, Input, Output, OnInit, ViewChild, DebugElement, OnChanges, SimpleChanges } from '@angular/core'; import { AlfrescoTranslationService } from 'ng2-alfresco-core'; import { ActivitiStartForm } from 'ng2-activiti-form'; import { ActivitiProcessService } from './../services/activiti-process.service'; @@ -34,6 +34,9 @@ export class ActivitiStartProcessButton implements OnInit, OnChanges { @Input() appId: string; + @Output() + start: EventEmitter = new EventEmitter(); + @ViewChild('dialog') dialog: DebugElement; @@ -54,18 +57,18 @@ export class ActivitiStartProcessButton implements OnInit, OnChanges { } ngOnInit() { - this.load(this.appId); + this.load(); } ngOnChanges(changes: SimpleChanges) { let appId = changes['appId']; if (appId && (appId.currentValue || appId.currentValue === null)) { - this.load(appId.currentValue); + this.load(); return; } } - public load(appId: string) { + public load() { this.activitiProcess.getProcessDefinitions(this.appId).subscribe( (res: any[]) => { this.processDefinitions = res; @@ -90,6 +93,7 @@ export class ActivitiStartProcessButton implements OnInit, OnChanges { (res: any) => { this.name = ''; this.processDefinitionId = ''; + this.start.emit(res); this.cancel(); }, (err) => {