From 1430314815d77ec4859da6d0564d5ed882788ca8 Mon Sep 17 00:00:00 2001 From: Vito Date: Thu, 30 Apr 2020 22:55:24 +0100 Subject: [PATCH] =?UTF-8?q?=20[ACA-3229]=20-=20fixed=20error=20on=20start?= =?UTF-8?q?=20process=20cloud=20when=20all=20the=20value=20a=E2=80=A6=20(#?= =?UTF-8?q?5660)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [ACA-3229] - fixed error on start process cloud when all the value are selected by default * Update start-process-cloud.component.ts Co-authored-by: Eugenio Romano --- .../start-process-cloud.component.spec.ts | 8 ++++++-- .../start-process-cloud.component.ts | 16 ++++++++++------ .../services/start-process-cloud.service.ts | 18 ++++++++++++++++++ 3 files changed, 34 insertions(+), 8 deletions(-) diff --git a/lib/process-services-cloud/src/lib/process/start-process/components/start-process-cloud.component.spec.ts b/lib/process-services-cloud/src/lib/process/start-process/components/start-process-cloud.component.spec.ts index cee347c612..ab2bd83df1 100755 --- a/lib/process-services-cloud/src/lib/process/start-process/components/start-process-cloud.component.spec.ts +++ b/lib/process-services-cloud/src/lib/process/start-process/components/start-process-cloud.component.spec.ts @@ -33,6 +33,7 @@ import { fakeProcessDefinitions, fakeStartForm, fakeStartFormNotValid, fakeProcessInstance, fakeNoNameProcessDefinitions, fakeSingleProcessDefinition, fakeCreatedProcessInstance } from '../mock/start-process.component.mock'; import { By } from '@angular/platform-browser'; +import { ProcessPayloadCloud } from '../models/process-payload-cloud.model'; describe('StartProcessCloudComponent', () => { @@ -99,6 +100,7 @@ describe('StartProcessCloudComponent', () => { component = fixture.componentInstance; getDefinitionsSpy = spyOn(processService, 'getProcessDefinitions').and.returnValue(of(fakeProcessDefinitions)); + spyOn(processService, 'updateProcess').and.returnValue(of()); startProcessSpy = spyOn(processService, 'startCreatedProcess').and.returnValue(of(fakeProcessInstance)); createProcessSpy = spyOn(processService, 'createProcess').and.returnValue(of(fakeCreatedProcessInstance)); }); @@ -128,7 +130,8 @@ describe('StartProcessCloudComponent', () => { const startBtn = fixture.nativeElement.querySelector('#button-start'); expect(startBtn.disabled).toBe(false); expect(component.isProcessFormValid()).toBe(true); - expect(createProcessSpy).toHaveBeenCalledWith('MyApp', component.processPayloadCloud); + expect(createProcessSpy).toHaveBeenCalledWith('MyApp', new ProcessPayloadCloud({name: 'OLE', + processDefinitionKey: fakeProcessDefinitions[1].key})); expect(component.currentCreatedProcess.status).toBe('CREATED'); expect(component.currentCreatedProcess.startDate).toBeNull(); })); @@ -297,7 +300,8 @@ describe('StartProcessCloudComponent', () => { expect(startBtn.disabled).toBe(false); expect(component.formCloud.isValid).toBe(true); expect(component.isProcessFormValid()).toBe(true); - expect(createProcessSpy).toHaveBeenCalledWith('MyApp', component.processPayloadCloud); + expect(createProcessSpy).toHaveBeenCalledWith('MyApp', new ProcessPayloadCloud({name: 'testFormWithProcess', + processDefinitionKey: fakeProcessDefinitions[1].key})); expect(component.currentCreatedProcess.status).toBe('CREATED'); expect(component.currentCreatedProcess.startDate).toBeNull(); })); diff --git a/lib/process-services-cloud/src/lib/process/start-process/components/start-process-cloud.component.ts b/lib/process-services-cloud/src/lib/process/start-process/components/start-process-cloud.component.ts index e44b9be032..c565518252 100755 --- a/lib/process-services-cloud/src/lib/process/start-process/components/start-process-cloud.component.ts +++ b/lib/process-services-cloud/src/lib/process/start-process/components/start-process-cloud.component.ts @@ -28,7 +28,7 @@ import { MatAutocompleteTrigger } from '@angular/material'; import { ProcessPayloadCloud } from '../models/process-payload-cloud.model'; import { debounceTime, takeUntil, switchMap, filter, distinctUntilChanged } from 'rxjs/operators'; import { ProcessDefinitionCloud } from '../models/process-definition-cloud.model'; -import { Subject, Observable } from 'rxjs'; +import { Subject, Observable, concat } from 'rxjs'; import { TaskVariableCloud } from '../../../form/models/task-variable-cloud.model'; @Component({ @@ -167,8 +167,11 @@ export class StartProcessCloudComponent implements OnChanges, OnInit, OnDestroy } private generateProcessInstance(): Observable { - this.buildProcessCloudPayload(); - return this.startProcessCloudService.createProcess(this.appName, this.processPayloadCloud); + const createPayload: ProcessPayloadCloud = new ProcessPayloadCloud({ + name: this.processInstanceName.value, + processDefinitionKey: this.processPayloadCloud.processDefinitionKey + }); + return this.startProcessCloudService.createProcess(this.appName, createPayload); } private selectProcessDefinitionByProcesDefinitionName(processDefinitionName: string): void { @@ -271,10 +274,11 @@ export class StartProcessCloudComponent implements OnChanges, OnInit, OnDestroy startProcess() { this.isLoading = true; - this.buildProcessCloudPayload(); - - this.startProcessCloudService.startCreatedProcess(this.appName, this.currentCreatedProcess.id).subscribe( + concat( + this.startProcessCloudService.updateProcess(this.appName, this.currentCreatedProcess.id, this.processPayloadCloud), + this.startProcessCloudService.startCreatedProcess(this.appName, this.currentCreatedProcess.id) + ).subscribe( (res) => { this.success.emit(res); this.isLoading = false; diff --git a/lib/process-services-cloud/src/lib/process/start-process/services/start-process-cloud.service.ts b/lib/process-services-cloud/src/lib/process/start-process/services/start-process-cloud.service.ts index 6e35b39c53..7e4d4148f3 100755 --- a/lib/process-services-cloud/src/lib/process/start-process/services/start-process-cloud.service.ts +++ b/lib/process-services-cloud/src/lib/process/start-process/services/start-process-cloud.service.ts @@ -63,6 +63,7 @@ export class StartProcessCloudService extends BaseCloudService { */ createProcess(appName: string, payload: ProcessPayloadCloud): Observable { const url = `${this.getBasePath(appName)}/rb/v1/process-instances/create`; + payload.payloadType = 'StartProcessPayload'; return this.post(url, payload).pipe( map((result: any) => result.entry), @@ -92,9 +93,26 @@ export class StartProcessCloudService extends BaseCloudService { */ startProcess(appName: string, payload: ProcessPayloadCloud): Observable { const url = `${this.getBasePath(appName)}/rb/v1/process-instances`; + payload.payloadType = 'StartProcessPayload'; return this.post(url, payload).pipe( map(processInstance => new ProcessInstanceCloud(processInstance)) ); } + + /** + * Update an existing process instance + * @param appName name of the Application + * @param processInstanceId process instance to update + * @param payload Details of the process (definition key, name, variables, etc) + * @returns Details of the process instance just started + */ + updateProcess(appName: string, processInstanceId: string, payload: ProcessPayloadCloud): Observable { + const url = `${this.getBasePath(appName)}/rb/v1/process-instances/${processInstanceId}`; + payload.payloadType = 'UpdateProcessPayload'; + + return this.put(url, payload).pipe( + map(processInstance => new ProcessInstanceCloud(processInstance)) + ); + } }