Commit 671269ad authored by Carsten  Rose's avatar Carsten Rose
Browse files

Fixes #9990: Describe order of FormElement processing - https://qfq.io/doc/#form-process-order

parent 8ab37404
Pipeline #3196 passed with stages
in 3 minutes and 40 seconds
<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" id="Definitions_1egqcwa" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="2.2.4">
<bpmn:collaboration id="Collaboration_0gqz3wa">
<bpmn:participant id="Participant_1d0jmhs" name="Form Load" processRef="Process_1" />
<bpmn:participant id="Participant_16ldzur" name="Form Save" processRef="Process_0tyry81" />
<bpmn:participant id="Participant_0jwt14j" name="Form Delete" processRef="Process_1f1bv9d" />
</bpmn:collaboration>
<bpmn:process id="Process_1" isExecutable="true">
<bpmn:startEvent id="StartEvent_1">
<bpmn:outgoing>SequenceFlow_18h7xec</bpmn:outgoing>
</bpmn:startEvent>
<bpmn:task id="Task_087ysca" name="FE Action: beforeLoad">
<bpmn:incoming>SequenceFlow_18h7xec</bpmn:incoming>
<bpmn:outgoing>SequenceFlow_1i2qd5c</bpmn:outgoing>
</bpmn:task>
<bpmn:task id="Task_0zvugq3" name="BuildForm">
<bpmn:incoming>SequenceFlow_1i2qd5c</bpmn:incoming>
<bpmn:outgoing>SequenceFlow_087ugzg</bpmn:outgoing>
</bpmn:task>
<bpmn:task id="Task_19kacyh" name="FE Action: afterLoad">
<bpmn:incoming>SequenceFlow_087ugzg</bpmn:incoming>
<bpmn:outgoing>SequenceFlow_1fuoqzt</bpmn:outgoing>
</bpmn:task>
<bpmn:task id="Task_156p4pi" name="Show Form">
<bpmn:incoming>SequenceFlow_1fuoqzt</bpmn:incoming>
<bpmn:outgoing>SequenceFlow_0unt63n</bpmn:outgoing>
</bpmn:task>
<bpmn:endEvent id="EndEvent_0o91ed3">
<bpmn:incoming>SequenceFlow_0unt63n</bpmn:incoming>
</bpmn:endEvent>
<bpmn:sequenceFlow id="SequenceFlow_18h7xec" sourceRef="StartEvent_1" targetRef="Task_087ysca" />
<bpmn:sequenceFlow id="SequenceFlow_1i2qd5c" sourceRef="Task_087ysca" targetRef="Task_0zvugq3" />
<bpmn:sequenceFlow id="SequenceFlow_087ugzg" sourceRef="Task_0zvugq3" targetRef="Task_19kacyh" />
<bpmn:sequenceFlow id="SequenceFlow_1fuoqzt" sourceRef="Task_19kacyh" targetRef="Task_156p4pi" />
<bpmn:sequenceFlow id="SequenceFlow_0unt63n" sourceRef="Task_156p4pi" targetRef="EndEvent_0o91ed3" />
<bpmn:textAnnotation id="TextAnnotation_09ovyvr">
<bpmn:text>incl. all Template Groups, Pills and Fieldsets</bpmn:text>
</bpmn:textAnnotation>
<bpmn:association id="Association_0az66lx" sourceRef="Task_0zvugq3" targetRef="TextAnnotation_09ovyvr" />
</bpmn:process>
<bpmn:process id="Process_0tyry81" isExecutable="false">
<bpmn:startEvent id="StartEvent_09cyjcj">
<bpmn:outgoing>SequenceFlow_1clg7oh</bpmn:outgoing>
</bpmn:startEvent>
<bpmn:task id="Task_0qkggn2" name="FE Action: beforeSave, beforeInsert, beforeUpdate">
<bpmn:incoming>SequenceFlow_1clg7oh</bpmn:incoming>
<bpmn:outgoing>SequenceFlow_1b7k0nc</bpmn:outgoing>
</bpmn:task>
<bpmn:sequenceFlow id="SequenceFlow_1clg7oh" sourceRef="StartEvent_09cyjcj" targetRef="Task_0qkggn2" />
<bpmn:task id="Task_0jjjjc4" name="Collect FE Native (column in primary table). &#10;Write data to primary table">
<bpmn:incoming>SequenceFlow_1b7k0nc</bpmn:incoming>
<bpmn:outgoing>SequenceFlow_0nf0hx1</bpmn:outgoing>
</bpmn:task>
<bpmn:sequenceFlow id="SequenceFlow_1b7k0nc" sourceRef="Task_0qkggn2" targetRef="Task_0jjjjc4" />
<bpmn:task id="Task_0rqrevv" name="Do sqlBefore, sqlInsert/sqlUpdate, sqlDelete, sqlAfter">
<bpmn:incoming>SequenceFlow_0nf0hx1</bpmn:incoming>
<bpmn:outgoing>SequenceFlow_0qljx5b</bpmn:outgoing>
</bpmn:task>
<bpmn:sequenceFlow id="SequenceFlow_0nf0hx1" sourceRef="Task_0jjjjc4" targetRef="Task_0rqrevv" />
<bpmn:task id="Task_01k0x08" name="Do FE upload">
<bpmn:incoming>SequenceFlow_0qljx5b</bpmn:incoming>
<bpmn:outgoing>SequenceFlow_14n2tiv</bpmn:outgoing>
</bpmn:task>
<bpmn:sequenceFlow id="SequenceFlow_0qljx5b" sourceRef="Task_0rqrevv" targetRef="Task_01k0x08" />
<bpmn:task id="Task_1gou88c" name="Do FE Action: afterSave, afterUpdate, afterInsert, sendmail">
<bpmn:incoming>SequenceFlow_14n2tiv</bpmn:incoming>
<bpmn:outgoing>SequenceFlow_0wg7tov</bpmn:outgoing>
</bpmn:task>
<bpmn:sequenceFlow id="SequenceFlow_14n2tiv" sourceRef="Task_01k0x08" targetRef="Task_1gou88c" />
<bpmn:task id="Task_0om9ezo" name="Paste QFQ Record Clipboard">
<bpmn:incoming>SequenceFlow_0wg7tov</bpmn:incoming>
<bpmn:outgoing>SequenceFlow_1d0mgd0</bpmn:outgoing>
</bpmn:task>
<bpmn:sequenceFlow id="SequenceFlow_0wg7tov" sourceRef="Task_1gou88c" targetRef="Task_0om9ezo" />
<bpmn:endEvent id="EndEvent_18haf6h">
<bpmn:incoming>SequenceFlow_1d0mgd0</bpmn:incoming>
</bpmn:endEvent>
<bpmn:sequenceFlow id="SequenceFlow_1d0mgd0" sourceRef="Task_0om9ezo" targetRef="EndEvent_18haf6h" />
<bpmn:association id="Association_1c19y0j" sourceRef="Task_0rqrevv" targetRef="TextAnnotation_1p9ftgc" />
<bpmn:textAnnotation id="TextAnnotation_1p9ftgc">
<bpmn:text>FE native</bpmn:text>
</bpmn:textAnnotation>
<bpmn:association id="Association_0yrxesu" sourceRef="Task_1gou88c" targetRef="TextAnnotation_0kybenx" />
<bpmn:textAnnotation id="TextAnnotation_0kybenx">
<bpmn:text>E.g.: Non primary table columns</bpmn:text>
</bpmn:textAnnotation>
</bpmn:process>
<bpmn:process id="Process_1f1bv9d" isExecutable="false">
<bpmn:startEvent id="StartEvent_0my9753">
<bpmn:outgoing>SequenceFlow_1s6gjr4</bpmn:outgoing>
</bpmn:startEvent>
<bpmn:task id="Task_0u53rg6" name="FE Action: beforeDelete">
<bpmn:incoming>SequenceFlow_1s6gjr4</bpmn:incoming>
<bpmn:outgoing>SequenceFlow_1myjsww</bpmn:outgoing>
</bpmn:task>
<bpmn:task id="Task_1cuzajj" name="Delete Record">
<bpmn:incoming>SequenceFlow_1myjsww</bpmn:incoming>
<bpmn:outgoing>SequenceFlow_01wmt7s</bpmn:outgoing>
</bpmn:task>
<bpmn:task id="Task_1fy0529" name="FE Action: afterDelete">
<bpmn:incoming>SequenceFlow_01wmt7s</bpmn:incoming>
<bpmn:outgoing>SequenceFlow_1wxchhg</bpmn:outgoing>
</bpmn:task>
<bpmn:endEvent id="EndEvent_1ky7g3k">
<bpmn:incoming>SequenceFlow_1wxchhg</bpmn:incoming>
</bpmn:endEvent>
<bpmn:sequenceFlow id="SequenceFlow_1s6gjr4" sourceRef="StartEvent_0my9753" targetRef="Task_0u53rg6" />
<bpmn:sequenceFlow id="SequenceFlow_1myjsww" sourceRef="Task_0u53rg6" targetRef="Task_1cuzajj" />
<bpmn:sequenceFlow id="SequenceFlow_01wmt7s" sourceRef="Task_1cuzajj" targetRef="Task_1fy0529" />
<bpmn:sequenceFlow id="SequenceFlow_1wxchhg" sourceRef="Task_1fy0529" targetRef="EndEvent_1ky7g3k" />
</bpmn:process>
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Collaboration_0gqz3wa">
<bpmndi:BPMNShape id="Participant_1d0jmhs_di" bpmnElement="Participant_1d0jmhs">
<dc:Bounds x="123" y="89" width="1137" height="242" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
<dc:Bounds x="172" y="195" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Participant_16ldzur_di" bpmnElement="Participant_16ldzur">
<dc:Bounds x="123" y="332" width="1138" height="234" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Participant_0jwt14j_di" bpmnElement="Participant_0jwt14j">
<dc:Bounds x="123" y="561" width="1138" height="200" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_087ysca_di" bpmnElement="Task_087ysca">
<dc:Bounds x="258" y="173" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="SequenceFlow_18h7xec_di" bpmnElement="SequenceFlow_18h7xec">
<di:waypoint x="208" y="213" />
<di:waypoint x="258" y="213" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="Task_0zvugq3_di" bpmnElement="Task_0zvugq3">
<dc:Bounds x="408" y="173" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="SequenceFlow_1i2qd5c_di" bpmnElement="SequenceFlow_1i2qd5c">
<di:waypoint x="358" y="213" />
<di:waypoint x="408" y="213" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="Task_19kacyh_di" bpmnElement="Task_19kacyh">
<dc:Bounds x="558" y="173" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="SequenceFlow_087ugzg_di" bpmnElement="SequenceFlow_087ugzg">
<di:waypoint x="508" y="213" />
<di:waypoint x="558" y="213" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="Task_156p4pi_di" bpmnElement="Task_156p4pi">
<dc:Bounds x="704" y="173" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="SequenceFlow_1fuoqzt_di" bpmnElement="SequenceFlow_1fuoqzt">
<di:waypoint x="658" y="213" />
<di:waypoint x="704" y="213" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="EndEvent_0o91ed3_di" bpmnElement="EndEvent_0o91ed3">
<dc:Bounds x="850" y="195" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="SequenceFlow_0unt63n_di" bpmnElement="SequenceFlow_0unt63n">
<di:waypoint x="804" y="213" />
<di:waypoint x="850" y="213" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="TextAnnotation_09ovyvr_di" bpmnElement="TextAnnotation_09ovyvr">
<dc:Bounds x="418" y="109" width="170" height="41" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="Association_0az66lx_di" bpmnElement="Association_0az66lx">
<di:waypoint x="480" y="173" />
<di:waypoint x="492" y="150" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="StartEvent_09cyjcj_di" bpmnElement="StartEvent_09cyjcj">
<dc:Bounds x="185" y="440" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_0qkggn2_di" bpmnElement="Task_0qkggn2">
<dc:Bounds x="271" y="418" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="SequenceFlow_1clg7oh_di" bpmnElement="SequenceFlow_1clg7oh">
<di:waypoint x="221" y="458" />
<di:waypoint x="271" y="458" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="Task_0jjjjc4_di" bpmnElement="Task_0jjjjc4">
<dc:Bounds x="421" y="418" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="SequenceFlow_1b7k0nc_di" bpmnElement="SequenceFlow_1b7k0nc">
<di:waypoint x="371" y="458" />
<di:waypoint x="421" y="458" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="Task_01k0x08_di" bpmnElement="Task_01k0x08">
<dc:Bounds x="712" y="418" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_0rqrevv_di" bpmnElement="Task_0rqrevv">
<dc:Bounds x="563" y="418" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="SequenceFlow_0nf0hx1_di" bpmnElement="SequenceFlow_0nf0hx1">
<di:waypoint x="521" y="458" />
<di:waypoint x="563" y="458" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="TextAnnotation_1p9ftgc_di" bpmnElement="TextAnnotation_1p9ftgc">
<dc:Bounds x="563" y="355" width="100" height="30" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="Association_1c19y0j_di" bpmnElement="Association_1c19y0j">
<di:waypoint x="613" y="418" />
<di:waypoint x="613" y="385" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="SequenceFlow_0qljx5b_di" bpmnElement="SequenceFlow_0qljx5b">
<di:waypoint x="663" y="458" />
<di:waypoint x="712" y="458" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="Task_1gou88c_di" bpmnElement="Task_1gou88c">
<dc:Bounds x="861" y="418" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="SequenceFlow_14n2tiv_di" bpmnElement="SequenceFlow_14n2tiv">
<di:waypoint x="812" y="458" />
<di:waypoint x="861" y="458" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="Task_0om9ezo_di" bpmnElement="Task_0om9ezo">
<dc:Bounds x="1010" y="418" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="SequenceFlow_0wg7tov_di" bpmnElement="SequenceFlow_0wg7tov">
<di:waypoint x="961" y="458" />
<di:waypoint x="1010" y="458" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="EndEvent_18haf6h_di" bpmnElement="EndEvent_18haf6h">
<dc:Bounds x="1159" y="440" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="SequenceFlow_1d0mgd0_di" bpmnElement="SequenceFlow_1d0mgd0">
<di:waypoint x="1110" y="458" />
<di:waypoint x="1159" y="458" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="TextAnnotation_0kybenx_di" bpmnElement="TextAnnotation_0kybenx">
<dc:Bounds x="792" y="355" width="238" height="30" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="Association_0yrxesu_di" bpmnElement="Association_0yrxesu">
<di:waypoint x="911" y="418" />
<di:waypoint x="911" y="385" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="StartEvent_0my9753_di" bpmnElement="StartEvent_0my9753">
<dc:Bounds x="188" y="639" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_0u53rg6_di" bpmnElement="Task_0u53rg6">
<dc:Bounds x="274" y="617" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_1cuzajj_di" bpmnElement="Task_1cuzajj">
<dc:Bounds x="424" y="617" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_1fy0529_di" bpmnElement="Task_1fy0529">
<dc:Bounds x="574" y="617" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="EndEvent_1ky7g3k_di" bpmnElement="EndEvent_1ky7g3k">
<dc:Bounds x="719" y="639" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="SequenceFlow_1s6gjr4_di" bpmnElement="SequenceFlow_1s6gjr4">
<di:waypoint x="224" y="657" />
<di:waypoint x="274" y="657" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="SequenceFlow_1myjsww_di" bpmnElement="SequenceFlow_1myjsww">
<di:waypoint x="374" y="657" />
<di:waypoint x="424" y="657" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="SequenceFlow_01wmt7s_di" bpmnElement="SequenceFlow_01wmt7s">
<di:waypoint x="524" y="657" />
<di:waypoint x="574" y="657" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="SequenceFlow_1wxchhg_di" bpmnElement="SequenceFlow_1wxchhg">
<di:waypoint x="674" y="657" />
<di:waypoint x="719" y="657" />
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</bpmn:definitions>
......@@ -14,7 +14,7 @@
.. Bold **bold**
.. Code ``text``
.. External Links: `Bootstrap <http://getbootstrap.com/>`_
.. Add Images: .. image:: ../images/a4.jpg
.. Add Images: .. image:: ../Images/a4.jpg
..
..
.. Admonitions
......@@ -2250,6 +2250,28 @@ General
* With the `Dynamic` option, it's easily possible to use one Typo3 page and display different forms on that specific
page. This is nice to configure few Typo 3 pages. The disadvantage is that the user might loose the navigation.
Form process order
------------------
Depending on `form load / save` or `record delete`, different tasks are performed. Processing is divided into:
* Native FormElements like: `input`, `select list`, `checkbox`, `radio`, ....
* `upload` elements are categorized as native FormElement, but will be processed later.
* `pill`, `fieldset` and `subrecord` elements are only processed during form load, they do not impact `save` or `delete`.
* Action FormElement like `before...`, `after...`, `sendmail` ...
Each FormElement has an order.
Native FormElements which 'name':
* corresponds to a column in the form primary table: are grouped together in one insert or update query.
* do not correspond to a column in the primary table: needs an explicit defined Action FormElement to be handled.
FormElement processing order:
.. image:: Images/FormProcess.png
.. _record_locking:
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment