From 2e9aed300b54049b74d42e36aed00dac1fe36b54 Mon Sep 17 00:00:00 2001 From: Miguel Angel Date: Tue, 13 Oct 2026 12:18:24 -0400 Subject: [PATCH 1/2] test: add tests for Intermediate Message Throw Event behavior --- .../IntermediateThrowEventMergeTest.php | 91 +++++++++++++++++++ .../four_6787_intermediate_throw_event.json | 1 + 2 files changed, 92 insertions(+) create mode 100644 tests/Feature/IntermediateThrowEventMergeTest.php create mode 100644 tests/Fixtures/four_6787_intermediate_throw_event.json diff --git a/tests/Feature/IntermediateThrowEventMergeTest.php b/tests/Feature/IntermediateThrowEventMergeTest.php new file mode 100644 index 0000000000..23a2e4217c --- /dev/null +++ b/tests/Feature/IntermediateThrowEventMergeTest.php @@ -0,0 +1,91 @@ + Exclusive Gateway (select = 1 / 2 / 3) + * select 1 -> Form Task 1 -> node_19 (Intermediate Message Throw) + * select 2 -> Form Task 2 -> node_19 + * select 3 -> Form Task 3 -> node_19 + * node_19 -> Message End Event (node_23) + */ +class IntermediateThrowEventMergeTest extends TestCase +{ + use RequestHelper; + + /** + * Import the fixture, start a request and complete the first Form Task with the given select value. + * + * @return array{process: Process, instance: ProcessRequest} + */ + private function startAndSelectBranch(string $select): array + { + ImportProcess::dispatchSync( + file_get_contents(__DIR__ . '/../Fixtures/four_6787_intermediate_throw_event.json') + ); + + $process = Process::orderBy('id', 'desc')->first(); + + $route = route('api.process_events.trigger', [$process->id, 'event' => 'node_1']); + $this->apiCall('POST', $route, []); + + $instance = ProcessRequest::orderBy('id', 'desc')->first(); + $startTask = ProcessRequestToken::where('element_name', 'Form Task') + ->where('process_request_id', $instance->id) + ->first(); + WorkflowManager::completeTask($process, $instance, $startTask, ['select' => $select]); + + return ['process' => $process, 'instance' => $instance]; + } + + /** + * Complete the branch task (Form Task 1, 2 or 3) that follows the exclusive gateway. + */ + private function completeBranchTask(Process $process, ProcessRequest $instance, string $branchTaskName): void + { + $task = ProcessRequestToken::where('element_name', $branchTaskName) + ->where('process_request_id', $instance->id) + ->first(); + $this->assertNotNull($task, "Expected branch task '{$branchTaskName}' to be created"); + WorkflowManager::completeTask($process, $instance, $task, []); + } + + public function testBranchOneCompletesRequest() + { + ['process' => $process, 'instance' => $instance] = $this->startAndSelectBranch('1'); + $this->completeBranchTask($process, $instance, 'Form Task 1'); + + $instance->refresh(); + $this->assertEquals('COMPLETED', $instance->status); + } + + public function testBranchTwoCompletesRequest() + { + ['process' => $process, 'instance' => $instance] = $this->startAndSelectBranch('2'); + $this->completeBranchTask($process, $instance, 'Form Task 2'); + + $instance->refresh(); + $this->assertEquals('COMPLETED', $instance->status); + } + + public function testBranchThreeCompletesRequest() + { + ['process' => $process, 'instance' => $instance] = $this->startAndSelectBranch('3'); + $this->completeBranchTask($process, $instance, 'Form Task 3'); + + $instance->refresh(); + $this->assertEquals('COMPLETED', $instance->status); + } +} diff --git a/tests/Fixtures/four_6787_intermediate_throw_event.json b/tests/Fixtures/four_6787_intermediate_throw_event.json new file mode 100644 index 0000000000..78da760e04 --- /dev/null +++ b/tests/Fixtures/four_6787_intermediate_throw_event.json @@ -0,0 +1 @@ +{"type":"process_package","version":"1","process":{"id":219,"uuid":"976c3032-bb83-4d15-b955-f1a9a592ff0e","process_category_id":"4","user_id":3,"description":"FOUR-6787","name":"FOUR-6787","cancel_screen_id":null,"request_detail_screen_id":null,"status":"ACTIVE","is_valid":1,"package_key":null,"pause_timer_start":0,"deleted_at":null,"created_at":"2022-10-04T18:46:48+00:00","updated_at":"2022-10-04T19:41:05+00:00","start_events":[{"id":"node_1","name":"Start Event","config":"{\"web_entry\":null}","assignment":"user","assignedUsers":"3","assignedGroups":"","ownerProcessId":"ProcessId","eventDefinitions":[],"ownerProcessName":"ProcessName","allowInterstitial":"false"}],"warnings":null,"self_service_tasks":[],"signal_events":[],"conditional_events":[],"properties":{"manager_id":null},"has_timer_start_events":false,"notifications":{"requester":{"started":false,"canceled":false,"completed":false},"assignee":{"started":false,"canceled":false,"completed":false},"participants":{"started":false,"canceled":false,"completed":false},"manager":{"started":false,"canceled":false,"completed":false}},"task_notifications":{},"bpmn":"\n\n \n \n node_8<\/bpmn:outgoing>\n <\/bpmn:startEvent>\n \n node_8<\/bpmn:incoming>\n node_10<\/bpmn:outgoing>\n <\/bpmn:task>\n \n node_10<\/bpmn:incoming>\n node_12<\/bpmn:outgoing>\n node_14<\/bpmn:outgoing>\n node_26<\/bpmn:outgoing>\n <\/bpmn:exclusiveGateway>\n \n node_12<\/bpmn:incoming>\n node_18<\/bpmn:outgoing>\n <\/bpmn:task>\n \n node_14<\/bpmn:incoming>\n node_16<\/bpmn:outgoing>\n <\/bpmn:task>\n \n \n \n select == '1'<\/bpmn:conditionExpression>\n <\/bpmn:sequenceFlow>\n \n select == '3'<\/bpmn:conditionExpression>\n <\/bpmn:sequenceFlow>\n \n node_16<\/bpmn:incoming>\n node_18<\/bpmn:incoming>\n node_28<\/bpmn:incoming>\n node_22<\/bpmn:outgoing>\n \n <\/bpmn:intermediateThrowEvent>\n \n \n \n node_22<\/bpmn:incoming>\n \n <\/bpmn:endEvent>\n \n \n node_26<\/bpmn:incoming>\n node_28<\/bpmn:outgoing>\n <\/bpmn:task>\n \n select == '2'<\/bpmn:conditionExpression>\n <\/bpmn:sequenceFlow>\n \n <\/bpmn:process>\n \n \n \n \n \n \n <\/bpmndi:BPMNShape>\n \n \n <\/bpmndi:BPMNShape>\n \n \n <\/bpmndi:BPMNShape>\n \n \n <\/bpmndi:BPMNShape>\n \n \n <\/bpmndi:BPMNShape>\n \n \n \n <\/bpmndi:BPMNEdge>\n \n \n \n <\/bpmndi:BPMNEdge>\n \n \n \n <\/bpmndi:BPMNEdge>\n \n \n \n <\/bpmndi:BPMNEdge>\n \n \n <\/bpmndi:BPMNShape>\n \n \n \n <\/bpmndi:BPMNEdge>\n \n \n \n <\/bpmndi:BPMNEdge>\n \n \n <\/bpmndi:BPMNShape>\n \n \n \n <\/bpmndi:BPMNEdge>\n \n \n <\/bpmndi:BPMNShape>\n \n \n \n <\/bpmndi:BPMNEdge>\n \n \n \n <\/bpmndi:BPMNEdge>\n <\/bpmndi:BPMNPlane>\n <\/bpmndi:BPMNDiagram>\n<\/bpmn:definitions>\n","anonymousUserId":1},"process_categories":[{"id":4,"uuid":"9745cc90-9034-43e2-b3f6-3d44496704ec","name":"catPaoprocess","status":"ACTIVE","is_system":0,"created_at":"2020-11-06T16:53:25+00:00","updated_at":"2022-09-15T16:46:45+00:00","pivot":{"assignable_id":219,"category_id":4,"category_type":"ProcessMaker\\Models\\ProcessCategory"}}],"screens":[{"id":43,"uuid":"97462095-99f8-4172-b775-e2de4bc7eb76","screen_category_id":"1","title":"1111","description":"11111","type":"CONVERSATIONAL","config":[{"name":"1111","items":[{"label":"Line Input","config":{"icon":"far fa-square","name":"form_input_1","type":"text","label":"New Input","helper":null,"readonly":false,"dataFormat":"string","validation":[],"placeholder":null},"component":"FormInput","inspector":[{"type":"FormInput","field":"name","config":{"name":"Variable Name","label":"Variable Name","helper":"A variable name is a symbolic name to reference information.","validation":"regex:\/^([a-zA-Z]([a-zA-Z0-9_]?)+\\.?)+(? Date ##\/##\/####
SSN ###-##-####
Phone (###) ###-####","validation":null}},{"type":"FormInput","field":"customCssSelector","config":{"label":"CSS Selector Name","helper":"Use this in your custom css rules","validation":"regex: [-?[_a-zA-Z]+[_-a-zA-Z0-9]*]"}},{"type":"FormInput","field":"ariaLabel","config":{"label":"Aria Label","helper":"Attribute designed to help assistive technology (e.g. screen readers) attach a label"}},{"type":"FormInput","field":"tabindex","config":{"label":"Tab Order","helper":"Order in which a user will move focus from one control to another by pressing the Tab key","validation":"regex: [0-9]*"}}],"editor-control":"FormInput","editor-component":"FormInput"}]}],"computed":[],"custom_css":null,"created_at":"2022-04-27T14:05:14+00:00","updated_at":"2022-09-15T20:41:41+00:00","status":"ACTIVE","key":null,"watchers":null,"categories":[{"id":1,"uuid":"9745bd7f-8e9c-4523-8069-2cecf7cbffc5","name":"Uncategorized","status":"ACTIVE","is_system":0,"created_at":"2022-09-15T16:04:37+00:00","updated_at":"2022-09-15T16:04:37+00:00","pivot":{"assignable_id":43,"category_id":1,"category_type":"ProcessMaker\\Models\\ScreenCategory"}}]},{"id":183,"uuid":"974dc57d-62d2-460c-919f-04929b41ce81","screen_category_id":"1","title":"1Season","description":"1Season","type":"FORM","config":[{"name":"1Season","items":[{"label":"Textarea","config":{"icon":"fas fa-paragraph","name":"date","rows":2,"label":"New Textarea","helper":null,"currency":{"code":"USD","name":"US Dollar","format":"#,###.##","symbol":"$"},"readonly":true,"richtext":false,"validation":[],"placeholder":null},"component":"FormTextArea","inspector":[{"type":"FormInput","field":"name","config":{"name":"Variable Name","label":"Variable Name","helper":"A variable name is a symbolic name to reference information.","validation":"regex:\/^(?:[A-Za-z])(?:[0-9A-Z_.a-z])*[^.]$\/|required|not_in:null,break,case,catch,continue,debugger,default,delete,do,else,finally,for,function,if,in,instanceof,new,return,switch,this,throw,try,typeof,var,void,while,with,class,const,enum,export,extends,import,super,true,false"}},{"type":"FormInput","field":"label","config":{"label":"Label","helper":"The label describes the field's name"}},{"type":"FormInput","field":"placeholder","config":{"label":"Placeholder Text","helper":"The placeholder is what is shown in the field when no value is provided yet"}},{"type":"FormInput","field":"helper","config":{"label":"Helper Text","helper":"Help text is meant to provide additional guidance on the field's value"}},{"type":"FormCheckbox","field":"richtext","config":{"label":"Rich Text","helper":null}},{"type":"ValidationSelect","field":"validation","config":{"label":"Validation Rules","helper":"The validation rules needed for this field"}},{"type":"FormInput","field":"rows","config":{"label":"Rows","helper":"The number of rows to provide for input","validation":"integer"}},{"type":"FormCheckbox","field":"readonly","config":{"label":"Read Only","helper":null}},{"type":"ColorSelect","field":"color","config":{"label":"Text Color","helper":"Set the element's text color","options":[{"value":"text-primary","content":"primary"},{"value":"text-secondary","content":"secondary"},{"value":"text-success","content":"success"},{"value":"text-danger","content":"danger"},{"value":"text-warning","content":"warning"},{"value":"text-info","content":"info"},{"value":"text-light","content":"light"},{"value":"text-dark","content":"dark"}]}},{"type":"ColorSelect","field":"bgcolor","config":{"label":"Background Color","helper":"Set the element's background color","options":[{"value":"alert alert-primary","content":"primary"},{"value":"alert alert-secondary","content":"secondary"},{"value":"alert alert-success","content":"success"},{"value":"alert alert-danger","content":"danger"},{"value":"alert alert-warning","content":"warning"},{"value":"alert alert-info","content":"info"},{"value":"alert alert-light","content":"light"},{"value":"alert alert-dark","content":"dark"}]}},{"type":{"props":["value","helper"],"watch":{"value":{"immediate":true}},"methods":[],"_scopeId":"data-v-172d71e1","computed":{"effectiveValue":[]},"_compiled":true,"components":{"MonacoEditor":{"name":"monaco-editor","_Ctor":[],"props":{"amdRequire":[]},"extends":{"name":"MonacoEditor","model":{"event":"change"},"props":{"theme":{"default":"vs"},"value":{"required":true},"options":[],"language":[],"original":[],"amdRequire":[],"diffEditor":{"default":false}},"watch":{"options":{"deep":true,"user":true}},"methods":[]},"methods":[]}},"staticRenderFns":[]},"field":"defaultValue","config":{"label":"Default Value","helper":"The default value is pre populated using the existing request data. This feature will allow you to modify the value displayed on screen load if needed."}},{"type":"FormInput","field":"conditionalHide","config":{"label":"Visibility Rule","helper":"This control is hidden until this expression is true"}},{"type":"FormInput","field":"customFormatter","config":{"label":"Custom Format String","helper":"Use the Mask Pattern format
Date ##\/##\/####
SSN ###-##-####
Phone (###) ###-####","validation":null}},{"type":"FormInput","field":"customCssSelector","config":{"label":"CSS Selector Name","helper":"Use this in your custom css rules","validation":"regex: [-?[_a-zA-Z]+[_-a-zA-Z0-9]*]"}},{"type":"FormInput","field":"ariaLabel","config":{"label":"Aria Label","helper":"Attribute designed to help assistive technology (e.g. screen readers) attach a label"}},{"type":"FormInput","field":"tabindex","config":{"label":"Tab Order","helper":"Order in which a user will move focus from one control to another by pressing the Tab key","validation":"regex: [0-9]*"}}],"editor-control":"FormTextArea","editor-component":"FormTextArea"},{"label":"Line Input","config":{"icon":"far fa-square","name":"season","type":"text","label":"_season","helper":null,"readonly":false,"dataFormat":"string","validation":[],"placeholder":null},"component":"FormInput","inspector":[{"type":"FormInput","field":"name","config":{"name":"Variable Name","label":"Variable Name","helper":"A variable name is a symbolic name to reference information.","validation":"regex:\/^(?:[A-Za-z])(?:[0-9A-Z_.a-z])*[^.]$\/|required|not_in:null,break,case,catch,continue,debugger,default,delete,do,else,finally,for,function,if,in,instanceof,new,return,switch,this,throw,try,typeof,var,void,while,with,class,const,enum,export,extends,import,super,true,false"}},{"type":"FormInput","field":"label","config":{"label":"Label","helper":"The label describes the field's name"}},{"type":"FormMultiselect","field":"dataFormat","config":{"name":"Data Type","label":"Data Type","helper":"The data type specifies what kind of data is stored in the variable.","options":[{"value":"string","content":"Text"},{"value":"int","content":"Integer"},{"value":"currency","content":"Currency"},{"value":"percentage","content":"Percentage"},{"value":"float","content":"Decimal"},{"value":"datetime","content":"Datetime"},{"value":"date","content":"Date"},{"value":"password","content":"Password"}],"validation":"required"}},{"type":{"extends":{"props":["label","error","options","helper","name","value","selectedControl"],"mixins":[{"props":["validation","validationData","validationField","validationMessages"],"watch":{"validationData":{"deep":true}},"methods":[]}],"methods":[],"computed":[],"_compiled":true,"components":{"Multiselect":{"name":"vue-multiselect","props":{"name":{"default":null},"limit":{"default":99999},"loading":{"default":false},"disabled":{"default":false},"tabindex":{"default":0},"limitText":[],"maxHeight":{"default":300},"showLabels":{"default":true},"selectLabel":{"default":"Press enter to select"},"deselectLabel":{"default":"Press enter to remove"},"openDirection":{"default":null},"selectedLabel":{"default":"Selected"},"showNoOptions":{"default":true},"showNoResults":{"default":true},"selectGroupLabel":{"default":"Press enter to select group"},"deselectGroupLabel":{"default":"Press enter to deselect group"}},"mixins":[{"props":{"id":{"default":null},"max":{"type":[null,null],"default":false},"label":[],"value":{"type":null},"options":{"required":true},"trackBy":[],"multiple":{"default":false},"taggable":{"default":false},"blockKeys":[],"allowEmpty":{"default":true},"groupLabel":[],"resetAfter":{"default":false},"searchable":{"default":true},"customLabel":[],"groupSelect":{"default":false},"groupValues":[],"placeholder":{"default":"Select option"},"tagPosition":{"default":"top"},"hideSelected":{"default":false},"optionsLimit":{"default":1000},"clearOnSelect":{"default":true},"closeOnSelect":{"default":true},"internalSearch":{"default":true},"preselectFirst":{"default":false},"preserveSearch":{"default":false},"tagPlaceholder":{"default":"Press enter to create a tag"}},"watch":[],"methods":[],"computed":[]},{"props":{"showPointer":{"default":true},"optionHeight":{"default":40}},"watch":[],"methods":[],"computed":[]}],"computed":[],"_compiled":true,"beforeCreate":[null],"staticRenderFns":[]}},"inheritAttrs":false,"staticRenderFns":[]},"computed":[],"_compiled":true,"staticRenderFns":[]},"field":"dataMask","config":{"name":"Data Format","label":"Data Format","helper":"The data format for the selected type."}},{"type":"ValidationSelect","field":"validation","config":{"label":"Validation Rules","helper":"The validation rules needed for this field"}},{"type":"FormInput","field":"placeholder","config":{"label":"Placeholder Text","helper":"The placeholder is what is shown in the field when no value is provided yet"}},{"type":"FormInput","field":"helper","config":{"label":"Helper Text","helper":"Help text is meant to provide additional guidance on the field's value"}},{"type":"FormCheckbox","field":"readonly","config":{"label":"Read Only","helper":null}},{"type":"ColorSelect","field":"color","config":{"label":"Text Color","helper":"Set the element's text color","options":[{"value":"text-primary","content":"primary"},{"value":"text-secondary","content":"secondary"},{"value":"text-success","content":"success"},{"value":"text-danger","content":"danger"},{"value":"text-warning","content":"warning"},{"value":"text-info","content":"info"},{"value":"text-light","content":"light"},{"value":"text-dark","content":"dark"}]}},{"type":"ColorSelect","field":"bgcolor","config":{"label":"Background Color","helper":"Set the element's background color","options":[{"value":"alert alert-primary","content":"primary"},{"value":"alert alert-secondary","content":"secondary"},{"value":"alert alert-success","content":"success"},{"value":"alert alert-danger","content":"danger"},{"value":"alert alert-warning","content":"warning"},{"value":"alert alert-info","content":"info"},{"value":"alert alert-light","content":"light"},{"value":"alert alert-dark","content":"dark"}]}},{"type":{"props":["value"],"watch":{"value":{"immediate":true}},"methods":[],"_scopeId":"data-v-67152bf8","computed":{"effectiveValue":[]},"_compiled":true,"components":{"MonacoEditor":{"name":"MonacoEditor","model":{"event":"change"},"props":{"theme":{"default":"vs"},"amdRequire":[]},"watch":{"options":{"deep":true}},"methods":[]}},"staticRenderFns":[]},"field":"defaultValue","config":{"label":"Default Value","helper":"Takes precedence over value set in data."}},{"type":"FormInput","field":"conditionalHide","config":{"label":"Visibility Rule","helper":"This control is hidden until this expression is true"}},{"type":"FormInput","field":"customCssSelector","config":{"label":"CSS Selector Name","helper":"Use this in your custom css rules","validation":"regex: [-?[_a-zA-Z]+[_-a-zA-Z0-9]*]"}}],"editor-control":"FormInput","editor-component":"FormInput"},{"items":[[{"label":"Line Input","config":{"icon":"far fa-square","name":"form_input_1","type":"text","label":"New Input","helper":null,"readonly":false,"dataFormat":"int","validation":[],"placeholder":null},"component":"FormInput","inspector":[{"type":"FormInput","field":"name","config":{"name":"Variable Name","label":"Variable Name","helper":"A variable name is a symbolic name to reference information.","validation":"regex:\/^(?:[A-Za-z])(?:[0-9A-Z_.a-z])*[^.]$\/|required|not_in:null,break,case,catch,continue,debugger,default,delete,do,else,finally,for,function,if,in,instanceof,new,return,switch,this,throw,try,typeof,var,void,while,with,class,const,enum,export,extends,import,super,true,false"}},{"type":"FormInput","field":"label","config":{"label":"Label","helper":"The label describes the field's name"}},{"type":"FormMultiselect","field":"dataFormat","config":{"name":"Data Type","label":"Data Type","helper":"The data type specifies what kind of data is stored in the variable.","options":[{"value":"string","content":"Text"},{"value":"int","content":"Integer"},{"value":"currency","content":"Currency"},{"value":"percentage","content":"Percentage"},{"value":"float","content":"Decimal"},{"value":"datetime","content":"Datetime"},{"value":"date","content":"Date"},{"value":"password","content":"Password"}],"validation":"required"}},{"type":{"extends":{"props":["label","error","options","helper","name","value","selectedControl"],"mixins":[{"props":{"validation":{"type":null},"validationData":{"type":null},"validationField":{"type":null},"validationMessages":{"type":null}},"watch":{"validationData":{"deep":true}},"methods":[],"computed":[]}],"methods":[],"computed":[],"_compiled":true,"inheritAttrs":false,"staticRenderFns":[]},"computed":[],"_compiled":true,"staticRenderFns":[]},"field":"dataMask","config":{"name":"Data Format","label":"Data Format","helper":"The data format for the selected type."}},{"type":"ValidationSelect","field":"validation","config":{"label":"Validation Rules","helper":"The validation rules needed for this field"}},{"type":"FormInput","field":"placeholder","config":{"label":"Placeholder Text","helper":"The placeholder is what is shown in the field when no value is provided yet"}},{"type":"FormInput","field":"helper","config":{"label":"Helper Text","helper":"Help text is meant to provide additional guidance on the field's value"}},{"type":"FormCheckbox","field":"readonly","config":{"label":"Read Only","helper":null}},{"type":"ColorSelect","field":"color","config":{"label":"Text Color","helper":"Set the element's text color","options":[{"value":"text-primary","content":"primary"},{"value":"text-secondary","content":"secondary"},{"value":"text-success","content":"success"},{"value":"text-danger","content":"danger"},{"value":"text-warning","content":"warning"},{"value":"text-info","content":"info"},{"value":"text-light","content":"light"},{"value":"text-dark","content":"dark"}]}},{"type":"ColorSelect","field":"bgcolor","config":{"label":"Background Color","helper":"Set the element's background color","options":[{"value":"alert alert-primary","content":"primary"},{"value":"alert alert-secondary","content":"secondary"},{"value":"alert alert-success","content":"success"},{"value":"alert alert-danger","content":"danger"},{"value":"alert alert-warning","content":"warning"},{"value":"alert alert-info","content":"info"},{"value":"alert alert-light","content":"light"},{"value":"alert alert-dark","content":"dark"}]}},{"type":{"props":["value","helper"],"watch":{"value":{"immediate":true}},"methods":[],"_scopeId":"data-v-172d71e1","computed":{"effectiveValue":[]},"_compiled":true,"components":{"MonacoEditor":{"name":"monaco-editor","_Ctor":[],"props":{"amdRequire":[]},"extends":{"name":"MonacoEditor","model":{"event":"change"},"props":{"theme":{"default":"vs"},"value":{"required":true},"options":[],"language":[],"original":[],"amdRequire":[],"diffEditor":{"default":false}},"watch":{"options":{"deep":true,"user":true}},"methods":[]},"methods":[]}},"staticRenderFns":[]},"field":"defaultValue","config":{"label":"Default Value","helper":"The default value is pre populated using the existing request data. This feature will allow you to modify the value displayed on screen load if needed."}},{"type":"FormInput","field":"conditionalHide","config":{"label":"Visibility Rule","helper":"This control is hidden until this expression is true"}},{"type":"FormInput","field":"customFormatter","config":{"label":"Custom Format String","helper":"Use the Mask Pattern format
Date ##\/##\/####
SSN ###-##-####
Phone (###) ###-####","validation":null}},{"type":"FormInput","field":"customCssSelector","config":{"label":"CSS Selector Name","helper":"Use this in your custom css rules","validation":"regex: [-?[_a-zA-Z]+[_-a-zA-Z0-9]*]"}},{"type":"FormInput","field":"ariaLabel","config":{"label":"Aria Label","helper":"Attribute designed to help assistive technology (e.g. screen readers) attach a label"}},{"type":"FormInput","field":"tabindex","config":{"label":"Tab Order","helper":"Order in which a user will move focus from one control to another by pressing the Tab key","validation":"regex: [0-9]*"}}],"editor-control":"FormInput","editor-component":"FormInput"}],[{"label":"Line Input","config":{"icon":"far fa-square","name":"what","type":"text","label":"New Input","helper":null,"readonly":true,"dataFormat":"string","validation":[],"placeholder":null},"component":"FormInput","inspector":[{"type":"FormInput","field":"name","config":{"name":"Variable Name","label":"Variable Name","helper":"A variable name is a symbolic name to reference information.","validation":"regex:\/^(?:[A-Za-z])(?:[0-9A-Z_.a-z])*[^.]$\/|required|not_in:null,break,case,catch,continue,debugger,default,delete,do,else,finally,for,function,if,in,instanceof,new,return,switch,this,throw,try,typeof,var,void,while,with,class,const,enum,export,extends,import,super,true,false"}},{"type":"FormInput","field":"label","config":{"label":"Label","helper":"The label describes the field's name"}},{"type":"FormMultiselect","field":"dataFormat","config":{"name":"Data Type","label":"Data Type","helper":"The data type specifies what kind of data is stored in the variable.","options":[{"value":"string","content":"Text"},{"value":"int","content":"Integer"},{"value":"currency","content":"Currency"},{"value":"percentage","content":"Percentage"},{"value":"float","content":"Decimal"},{"value":"datetime","content":"Datetime"},{"value":"date","content":"Date"},{"value":"password","content":"Password"}],"validation":"required"}},{"type":{"_Ctor":[],"extends":{"_Ctor":[],"props":{"name":{"type":null},"error":{"type":null},"label":{"type":null},"value":{"type":null},"helper":{"type":null},"options":{"type":null},"selectedControl":{"type":null}},"mixins":[{"props":{"validation":{"type":null},"validationData":{"type":null},"validationField":{"type":null},"validationMessages":{"type":null}},"watch":{"validationData":{"deep":true,"user":true}},"methods":[],"computed":[]}],"methods":[],"computed":[],"_compiled":true,"inheritAttrs":false,"staticRenderFns":[]},"computed":[],"_compiled":true,"staticRenderFns":[]},"field":"dataMask","config":{"name":"Data Format","label":"Data Format","helper":"The data format for the selected type."}},{"type":"ValidationSelect","field":"validation","config":{"label":"Validation Rules","helper":"The validation rules needed for this field"}},{"type":"FormInput","field":"placeholder","config":{"label":"Placeholder Text","helper":"The placeholder is what is shown in the field when no value is provided yet"}},{"type":"FormInput","field":"helper","config":{"label":"Helper Text","helper":"Help text is meant to provide additional guidance on the field's value"}},{"type":"FormCheckbox","field":"readonly","config":{"label":"Read Only","helper":null}},{"type":"ColorSelect","field":"color","config":{"label":"Text Color","helper":"Set the element's text color","options":[{"value":"text-primary","content":"primary"},{"value":"text-secondary","content":"secondary"},{"value":"text-success","content":"success"},{"value":"text-danger","content":"danger"},{"value":"text-warning","content":"warning"},{"value":"text-info","content":"info"},{"value":"text-light","content":"light"},{"value":"text-dark","content":"dark"}]}},{"type":"ColorSelect","field":"bgcolor","config":{"label":"Background Color","helper":"Set the element's background color","options":[{"value":"alert alert-primary","content":"primary"},{"value":"alert alert-secondary","content":"secondary"},{"value":"alert alert-success","content":"success"},{"value":"alert alert-danger","content":"danger"},{"value":"alert alert-warning","content":"warning"},{"value":"alert alert-info","content":"info"},{"value":"alert alert-light","content":"light"},{"value":"alert alert-dark","content":"dark"}]}},{"type":{"_Ctor":[],"props":{"value":{"type":null},"helper":{"type":null}},"watch":{"value":{"user":true,"immediate":true}},"methods":[],"_scopeId":"data-v-172d71e1","computed":{"effectiveValue":[]},"_compiled":true,"components":{"MonacoEditor":{"name":"monaco-editor","_Ctor":[],"props":{"amdRequire":[]},"extends":{"name":"MonacoEditor","model":{"event":"change"},"props":{"theme":{"default":"vs"},"value":{"required":true},"options":[],"language":[],"original":[],"amdRequire":[],"diffEditor":{"default":false}},"watch":{"options":{"deep":true,"user":true}},"methods":[]},"methods":[]}},"staticRenderFns":[]},"field":"defaultValue","config":{"label":"Default Value","helper":"The default value is pre populated using the existing request data. This feature will allow you to modify the value displayed on screen load if needed."}},{"type":"FormInput","field":"conditionalHide","config":{"label":"Visibility Rule","helper":"This control is hidden until this expression is true"}},{"type":"FormInput","field":"customFormatter","config":{"label":"Custom Format String","helper":"Use the Mask Pattern format
Date ##\/##\/####
SSN ###-##-####
Phone (###) ###-####","validation":null}},{"type":"FormInput","field":"customCssSelector","config":{"label":"CSS Selector Name","helper":"Use this in your custom css rules","validation":"regex: [-?[_a-zA-Z]+[_-a-zA-Z0-9]*]"}},{"type":"FormInput","field":"ariaLabel","config":{"label":"Aria Label","helper":"Attribute designed to help assistive technology (e.g. screen readers) attach a label"}},{"type":"FormInput","field":"tabindex","config":{"label":"Tab Order","helper":"Order in which a user will move focus from one control to another by pressing the Tab key","validation":"regex: [0-9]*"}}],"editor-control":"FormInput","editor-component":"FormInput"}]],"label":"Multicolumn \/ Table","config":{"icon":"fas fa-table","label":null,"options":[{"value":"1","content":"6"},{"value":"2","content":"6"}]},"component":"FormMultiColumn","container":true,"inspector":[{"type":"ContainerColumns","field":"options","config":{"label":"Column Width","validation":"columns-adds-to-12"}},{"type":"ColorSelect","field":"color","config":{"label":"Text Color","helper":"Set the element's text color","options":[{"value":"text-primary","content":"primary"},{"value":"text-secondary","content":"secondary"},{"value":"text-success","content":"success"},{"value":"text-danger","content":"danger"},{"value":"text-warning","content":"warning"},{"value":"text-info","content":"info"},{"value":"text-light","content":"light"},{"value":"text-dark","content":"dark"}]}},{"type":"ColorSelect","field":"bgcolor","config":{"label":"Background Color","helper":"Set the element's background color","options":[{"value":"alert alert-primary","content":"primary"},{"value":"alert alert-secondary","content":"secondary"},{"value":"alert alert-success","content":"success"},{"value":"alert alert-danger","content":"danger"},{"value":"alert alert-warning","content":"warning"},{"value":"alert alert-info","content":"info"},{"value":"alert alert-light","content":"light"},{"value":"alert alert-dark","content":"dark"}]}},{"type":"FormInput","field":"conditionalHide","config":{"label":"Visibility Rule","helper":"This control is hidden until this expression is true"}},{"type":"FormInput","field":"customFormatter","config":{"label":"Custom Format String","helper":"Use the Mask Pattern format
Date ##\/##\/####
SSN ###-##-####
Phone (###) ###-####","validation":null}},{"type":"FormInput","field":"customCssSelector","config":{"label":"CSS Selector Name","helper":"Use this in your custom css rules","validation":"regex: [-?[_a-zA-Z]+[_-a-zA-Z0-9]*]"}},{"type":"FormInput","field":"ariaLabel","config":{"label":"Aria Label","helper":"Attribute designed to help assistive technology (e.g. screen readers) attach a label"}},{"type":"FormInput","field":"tabindex","config":{"label":"Tab Order","helper":"Order in which a user will move focus from one control to another by pressing the Tab key","validation":"regex: [0-9]*"}}],"editor-control":"FormMultiColumn","editor-component":"MultiColumn"},{"label":"Submit Button","config":{"icon":"fas fa-share-square","name":null,"event":"submit","label":"New Submit","variant":"primary","fieldValue":null,"defaultSubmit":true},"component":"FormButton","inspector":[{"type":"FormInput","field":"label","config":{"label":"Label","helper":"The label describes the button's text"}},{"type":"FormInput","field":"name","config":{"name":"Variable Name","label":"Variable Name","helper":"A variable name is a symbolic name to reference information."}},{"type":"FormMultiselect","field":"event","config":{"label":"Type","helper":"Choose whether the button should submit the form","options":[{"value":"submit","content":"Submit Button"},{"value":"script","content":"Regular Button"}]}},{"type":"FormInput","field":"fieldValue","config":{"label":"Value","helper":"The value being submitted"}},{"type":"FormMultiselect","field":"variant","config":{"label":"Button Variant Style","helper":"The variant determines the appearance of the button","options":[{"value":"primary","content":"Primary"},{"value":"secondary","content":"Secondary"},{"value":"success","content":"Success"},{"value":"danger","content":"Danger"},{"value":"warning","content":"Warning"},{"value":"info","content":"Info"},{"value":"light","content":"Light"},{"value":"dark","content":"Dark"},{"value":"link","content":"Link"}]}},{"type":"FormInput","field":"conditionalHide","config":{"label":"Visibility Rule","helper":"This control is hidden until this expression is true"}},{"type":"FormInput","field":"customCssSelector","config":{"label":"CSS Selector Name","helper":"Use this in your custom css rules","validation":"regex: [-?[_a-zA-Z]+[_-a-zA-Z0-9]*]"}}],"editor-control":"FormSubmit","editor-component":"FormButton"}]}],"computed":[{"id":7,"name":"season","type":"expression","formula":"2+2","property":"season"},{"id":8,"name":"what","type":"javascript","formula":"return this.form_input_1 + 4;","property":"what"},{"id":9,"name":"date","type":"javascript","formula":"var date = new Date();\nvar str = date.getFullYear() + \"-\" + (date.getMonth() + 1) + \"-\" + date.getDate() + \" \" + date.getHours() + \":\" + date.getMinutes() + \":\" + date.getSeconds();\nreturn str;","property":"date"}],"custom_css":null,"created_at":"2020-06-18T19:21:08+00:00","updated_at":"2022-09-19T15:53:36+00:00","status":"ACTIVE","key":null,"watchers":null,"categories":[{"id":1,"uuid":"9745bd7f-8e9c-4523-8069-2cecf7cbffc5","name":"Uncategorized","status":"ACTIVE","is_system":0,"created_at":"2022-09-15T16:04:37+00:00","updated_at":"2022-09-15T16:04:37+00:00","pivot":{"assignable_id":183,"category_id":1,"category_type":"ProcessMaker\\Models\\ScreenCategory"}}]},{"id":247,"uuid":"9753ab2f-45d6-46a7-ab34-f49cf315f9b2","screen_category_id":"1","title":"screen pao simple","description":"screen pao simple","type":"FORM","config":[{"name":"screen pao simple","items":[{"label":"Line Input","config":{"icon":"far fa-square","name":"form_input_1","type":"text","label":"New Input","helper":null,"dataFormat":"string","validation":null,"placeholder":null},"component":"FormInput","inspector":[{"type":"FormInput","field":"name","config":{"name":"Variable Name","label":"Variable Name","helper":"A variable name is a symbolic name to reference information.","validation":"regex:\/^([a-zA-Z]([a-zA-Z0-9_]?)+\\.?)+(? Date ##\/##\/####
SSN ###-##-####
Phone (###) ###-####","validation":null}},{"type":"FormInput","field":"customCssSelector","config":{"label":"CSS Selector Name","helper":"Use this in your custom css rules","validation":"regex: [-?[_a-zA-Z]+[_-a-zA-Z0-9]*]"}},{"type":"FormInput","field":"ariaLabel","config":{"label":"Aria Label","helper":"Attribute designed to help assistive technology (e.g. screen readers) attach a label"}},{"type":"FormInput","field":"tabindex","config":{"label":"Tab Order","helper":"Order in which a user will move focus from one control to another by pressing the Tab key","validation":"regex: [0-9]*"}}],"editor-control":"FormInput","editor-component":"FormInput"},{"label":"Submit Button","config":{"icon":"fas fa-share-square","name":null,"event":"submit","label":"New Submit","tooltip":[],"variant":"primary","fieldValue":null,"defaultSubmit":true},"component":"FormButton","inspector":[{"type":"FormInput","field":"label","config":{"label":"Label","helper":"The label describes the button's text"}},{"type":"FormInput","field":"name","config":{"name":"Variable Name","label":"Variable Name","helper":"A variable name is a symbolic name to reference information.","validation":"regex:\/^(?:[A-Za-z])(?:[0-9A-Z_.a-z])*(? Date ##\/##\/####
SSN ###-##-####
Phone (###) ###-####","validation":null}},{"type":"FormInput","field":"customCssSelector","config":{"label":"CSS Selector Name","helper":"Use this in your custom css rules","validation":"regex: [-?[_a-zA-Z]+[_-a-zA-Z0-9]*]"}},{"type":"FormInput","field":"ariaLabel","config":{"label":"Aria Label","helper":"Attribute designed to help assistive technology (e.g. screen readers) attach a label"}},{"type":"FormInput","field":"tabindex","config":{"label":"Tab Order","helper":"Order in which a user will move focus from one control to another by pressing the Tab key","validation":"regex: [0-9]*"}}],"editor-control":"FormSubmit","editor-component":"FormButton"}]}],"computed":[],"custom_css":null,"created_at":"2022-06-22T14:26:41+00:00","updated_at":"2022-09-22T14:15:00+00:00","status":"ACTIVE","key":null,"watchers":null,"categories":[{"id":1,"uuid":"9745bd7f-8e9c-4523-8069-2cecf7cbffc5","name":"Uncategorized","status":"ACTIVE","is_system":0,"created_at":"2022-09-15T16:04:37+00:00","updated_at":"2022-09-15T16:04:37+00:00","pivot":{"assignable_id":247,"category_id":1,"category_type":"ProcessMaker\\Models\\ScreenCategory"}}]},{"id":373,"uuid":"976c31f0-a53b-4fa4-9382-8246c81b310f","screen_category_id":"6","title":"screen exclusive","description":"screen exclusive","type":"FORM","config":[{"name":"screen exclusive","items":[{"label":"Checkbox","config":{"icon":"fas fa-check-square","name":"Approve","label":"Approve","helper":null,"toggle":false,"disabled":false,"validation":[],"initiallyChecked":false},"component":"FormCheckbox","inspector":[{"type":"FormInput","field":"name","config":{"name":"Variable Name","label":"Variable Name","helper":"A variable name is a symbolic name to reference information.","validation":"regex:\/^([a-zA-Z]([a-zA-Z0-9_]?)+\\.?)+(? Date ##\/##\/####
SSN ###-##-####
Phone (###) ###-####","validation":null}},{"type":"FormInput","field":"customCssSelector","config":{"label":"CSS Selector Name","helper":"Use this in your custom css rules","validation":"regex: [-?[_a-zA-Z]+[_-a-zA-Z0-9]*]"}},{"type":"FormInput","field":"ariaLabel","config":{"label":"Aria Label","helper":"Attribute designed to help assistive technology (e.g. screen readers) attach a label"}},{"type":"FormInput","field":"tabindex","config":{"label":"Tab Order","helper":"Order in which a user will move focus from one control to another by pressing the Tab key","validation":"regex: [0-9]*"}}],"editor-control":"FormCheckbox","editor-component":"FormCheckbox"},{"label":"Select List","config":{"icon":"fas fa-angle-double-down","name":"select","label":"select","helper":null,"options":{"key":"value","value":"content","dataName":"response","jsonData":"[{\"content\":\"1\",\"value\":\"1\"},{\"content\":\"2\",\"value\":\"2\"},{\"content\":\"3\",\"value\":\"3\"}]","renderAs":"dropdown","editIndex":null,"pmqlQuery":null,"dataSource":"provideData","optionsList":[{"value":"1","content":"1"},{"value":"2","content":"2"},{"value":"3","content":"3"}],"removeIndex":null,"showRenderAs":true,"showJsonEditor":false,"showOptionCard":false,"selectedOptions":[],"allowMultiSelect":false,"showRemoveWarning":false,"valueTypeReturned":"single"},"readonly":false,"validation":[],"placeholder":null,"rootElement":"response","dataSourceUrl":null,"dataSourceEndpoint":null},"component":"FormSelectList","inspector":[{"type":"FormInput","field":"name","config":{"name":"Variable Name","label":"Variable Name","helper":"A variable name is a symbolic name to reference information.","validation":"regex:\/^([a-zA-Z]([a-zA-Z0-9_]?)+\\.?)+(? Date ##\/##\/####
SSN ###-##-####
Phone (###) ###-####","validation":null}},{"type":"FormInput","field":"customCssSelector","config":{"label":"CSS Selector Name","helper":"Use this in your custom css rules","validation":"regex: [-?[_a-zA-Z]+[_-a-zA-Z0-9]*]"}},{"type":"FormInput","field":"ariaLabel","config":{"label":"Aria Label","helper":"Attribute designed to help assistive technology (e.g. screen readers) attach a label"}},{"type":"FormInput","field":"tabindex","config":{"label":"Tab Order","helper":"Order in which a user will move focus from one control to another by pressing the Tab key","validation":"regex: [0-9]*"}}],"editor-control":"FormSelectList","editor-component":"FormSelectList"},{"label":"Submit Button","config":{"icon":"fas fa-share-square","name":null,"event":"submit","label":"New Submit","tooltip":[],"variant":"primary","fieldValue":null,"defaultSubmit":true},"component":"FormButton","inspector":[{"type":"FormInput","field":"label","config":{"label":"Label","helper":"The label describes the button's text"}},{"type":"FormInput","field":"name","config":{"name":"Variable Name","label":"Variable Name","helper":"A variable name is a symbolic name to reference information.","validation":"regex:\/^(?:[A-Za-z])(?:[0-9A-Z_.a-z])*(? Date ##\/##\/####
SSN ###-##-####
Phone (###) ###-####","validation":null}},{"type":"FormInput","field":"customCssSelector","config":{"label":"CSS Selector Name","helper":"Use this in your custom css rules","validation":"regex: [-?[_a-zA-Z]+[_-a-zA-Z0-9]*]"}},{"type":"FormInput","field":"ariaLabel","config":{"label":"Aria Label","helper":"Attribute designed to help assistive technology (e.g. screen readers) attach a label"}},{"type":"FormInput","field":"tabindex","config":{"label":"Tab Order","helper":"Order in which a user will move focus from one control to another by pressing the Tab key","validation":"regex: [0-9]*"}}],"editor-control":"FormSubmit","editor-component":"FormButton"}]}],"computed":[],"custom_css":null,"created_at":"2022-10-04T18:51:41+00:00","updated_at":"2022-10-04T19:38:43+00:00","status":"ACTIVE","key":null,"watchers":[],"categories":[{"id":6,"uuid":"97460483-4575-4032-94a2-dc23a7b4efea","name":"catpaoScreen","status":"ACTIVE","is_system":0,"created_at":"2022-02-09T15:19:37+00:00","updated_at":"2022-09-15T19:23:12+00:00","pivot":{"assignable_id":373,"category_id":6,"category_type":"ProcessMaker\\Models\\ScreenCategory"}}]}],"screen_categories":[],"scripts":[],"environment_variables":[]} \ No newline at end of file From a5c48bb776e493963f9ee685f7a38702e9ce3a0d Mon Sep 17 00:00:00 2001 From: Miguel Angel Date: Tue, 13 Oct 2026 15:06:24 -0400 Subject: [PATCH 2/2] fix: update namespace in IntermediateThrowEventMergeTest --- tests/Feature/IntermediateThrowEventMergeTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Feature/IntermediateThrowEventMergeTest.php b/tests/Feature/IntermediateThrowEventMergeTest.php index 23a2e4217c..78679f9c39 100644 --- a/tests/Feature/IntermediateThrowEventMergeTest.php +++ b/tests/Feature/IntermediateThrowEventMergeTest.php @@ -1,6 +1,6 @@