diff --git a/lib/process-services-cloud/src/lib/process/start-process/components/start-process-cloud.component.html b/lib/process-services-cloud/src/lib/process/start-process/components/start-process-cloud.component.html index 6e9b2c44c4..6d620c8b0a 100755 --- a/lib/process-services-cloud/src/lib/process/start-process/components/start-process-cloud.component.html +++ b/lib/process-services-cloud/src/lib/process/start-process/components/start-process-cloud.component.html @@ -84,7 +84,8 @@ [showValidationIcon]="false" [showTitle]="false" (formContentClicked)="onFormContentClicked($event)" - (formLoaded)="onFormLoaded($event)"> + (formLoaded)="onFormLoaded($event)" + (executeOutcome)="onCustomOutcomeClicked($event.outcome.name)"> 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 a8ebd1a0da..6742c179eb 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 @@ -780,6 +780,36 @@ describe('StartProcessCloudComponent', () => { expect(startProcessSpy).toHaveBeenCalledWith(component.appName, payload); }); + it('should call service with the correct parameters when formCloud is defined and custom outcome is clicked', async () => { + formDefinitionSpy.and.returnValue(of(fakeFormModelJson)); + component.ngOnChanges({ appName: firstChange }); + component.processForm.controls['processInstanceName'].setValue('My Process 1'); + component.appName = 'test app name'; + component.formCloud = new FormModel(JSON.stringify(fakeFormModelJson)); + component.formCloud.values = { dropdown: { id: '1', name: 'label 2' } }; + component.processDefinitionCurrent = fakeProcessDefinitions[2]; + component.processPayloadCloud.processDefinitionKey = fakeProcessDefinitions[2].key; + + const payload: ProcessWithFormPayloadCloud = new ProcessWithFormPayloadCloud({ + processName: component.processInstanceName.value, + processDefinitionKey: fakeProcessDefinitions[2].key, + variables: {}, + values: component.formCloud.values, + outcome: 'custom_outcome' + }); + + fixture.detectChanges(); + + component.onCustomOutcomeClicked('custom_outcome'); + + expect(startProcessWithFormSpy).toHaveBeenCalledWith( + component.appName, + fakeProcessDefinitions[2].formKey, + fakeProcessDefinitions[2].version, + payload + ); + }); + it('should call service with the correct parameters when variables are undefined and formCloud is defined', async () => { getDefinitionsSpy.and.returnValue(of([fakeProcessDefinitions[2]])); formDefinitionSpy.and.returnValue(of(fakeStartForm)); 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 b9e383c71c..652f27911e 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 @@ -123,6 +123,7 @@ export class StartProcessCloudComponent implements OnChanges, OnInit, OnDestroy filteredProcesses: ProcessDefinitionCloud[] = []; staticMappings: TaskVariableCloud[] = []; resolvedValues?: TaskVariableCloud[]; + customOutcome: string; protected onDestroy$ = new Subject(); @@ -366,6 +367,11 @@ export class StartProcessCloudComponent implements OnChanges, OnInit, OnDestroy } } + onCustomOutcomeClicked(outcome: string) { + this.customOutcome = outcome; + this.startProcess(); + } + startProcess() { this.isProcessStarting = true; @@ -378,7 +384,8 @@ export class StartProcessCloudComponent implements OnChanges, OnInit, OnDestroy processName: this.processInstanceName.value, processDefinitionKey: this.processPayloadCloud.processDefinitionKey, variables: this.variables ?? {}, - values: this.formCloud.values + values: this.formCloud.values, + outcome: this.customOutcome }) ) : this.startProcessCloudService.startProcess( diff --git a/lib/process-services-cloud/src/lib/process/start-process/models/process-with-form-payload-cloud.model.ts b/lib/process-services-cloud/src/lib/process/start-process/models/process-with-form-payload-cloud.model.ts index eadb0008af..affbe69b11 100755 --- a/lib/process-services-cloud/src/lib/process/start-process/models/process-with-form-payload-cloud.model.ts +++ b/lib/process-services-cloud/src/lib/process/start-process/models/process-with-form-payload-cloud.model.ts @@ -20,11 +20,13 @@ export class ProcessWithFormPayloadCloud { processDefinitionKey: string; variables: any; values: any; + outcome?: string; constructor(obj: ProcessWithFormPayloadCloud) { this.processName = obj.processName; this.processDefinitionKey = obj.processDefinitionKey; this.variables = obj.variables; this.values = obj.values; + this.outcome = obj.outcome; } }