details about start valutation

This commit is contained in:
Claus-Peter Hübner 2022-01-28 18:42:16 +01:00
parent ec707c78ae
commit b0135546f4
3 changed files with 378 additions and 14 deletions

View File

@ -102,29 +102,36 @@ Der aktuelle Kontostand wird dabei weiterhin ganz oben und direkt darunter der f
![UC_Send_Users_Gradido_TxReservedFunds.png](.\image\UC_Send_Users_Gradido_TxReservedFunds.png)
Die Liste der angezeigten Transaktionen ist nach ihrem Generierungszeitpunkt sortiert. Das Icon links deutet an, ob die *vorgebuchte* Transaktion als *Link* oder als *QR-Code* generiert wurde. Dann erscheint der Betrag, die Transaktionsnachricht, der Generierungs- und der Ablaufzeitpunkt sowie die vorgebuchte Vergänglichkeit, die bis zum Ablaufzeitpunkt anfallen würde. Über alle vorgebuchten Transaktionen ergibt die jeweilige Summe von Betrag plus Vergänglichkeitsbetrag die Gesamtsumme, die vom Kontostand abgezogen und als verfügbarer Betrag angezeigt wird.
Die Liste der angezeigten Transaktionen ist nach ihrem Generierungszeitpunkt sortiert. Das Icon links deutet an, ob die *vorgebuchte* Transaktion als *Link* oder als *QR-Code* generiert wurde. Dann erscheint der Betrag, die Transaktionsnachricht, der Generierungs- und der Ablaufzeitpunkt sowie die *vorgebuchte* Vergänglichkeit, die bis zum Ablaufzeitpunkt anfallen würde. Über alle *vorgebuchten* Transaktionen ergibt die jeweilige Summe von Betrag plus Vergänglichkeitsbetrag die Gesamtsumme, die vom Kontostand abgezogen und als verfügbarer Betrag angezeigt wird.
#### ToDo:
Die weiteren technischen Anforderungen, die sich aus der beschriebenen Anzeige und Verarbeitung von *gebuchten* und *vorgebuchten* Transaktionen für das Backend und die Persistenz ergeben, werden im noch zu erstellenden *Technischen Konzept* zu diesem UseCase beschrieben.
### Generierung des Links/QR-Codes
**ToDo**: PartnerID beachten?
#### **ToDo**:
PartnerID beachten?
Für die Generierung des Links und des QR-Codes werden folgende Daten benötigt:
* Gradido-Id des Senders: diese definiert sich gemäß dem Pattern: `<communityname>`/`<useralias>` und ist im Detail [hier](.\Benutzerverwaltung.md#Gradido-Id) beschrieben.
* Betrag : die Summe, die der Sender dem Empfänger übertragen möchte
* Secret : ein Key, der zur Ausführung der asynchronen Transaktion die ungebuchten Transaktionsdaten identifiziert
* Secret : ein Key, der zur Ausführung der asynchronen Transaktion die *ungebuchten* Transaktionsdaten beim Sender identifiziert und kryptographisch sicherstellt, dass die ursprünglich gesendeten Daten nicht verfälscht sind.
* Verwendungszweck : Nachricht, die den Zweck der Transaktion beschreibt
Aus diesen Daten wird ein Link nach folgendem Pattern erzeugt:
https://`<communityname>`/send/`<token>`
Das Token wird so generiert, dass es alle fachlich notwendigen Daten beinhaltet, um beim Empfang evtl. Überprüfungen auf fachliche Korrektheit von Betrag, Nachricht oder Gültigkeitsablaufdatum durchführen zu können. Zusätzlich muss das Token die technischen und fachlichen Daten enthalten, die bei der Ausführung der Transaktion die dafür ablaufenden Prozesse korrekt initiiert und gesteuert werden können. Die Details für die Anforderungen beim Empfang des Tokens werden weiter unten im Kapitel *Perspektive des Empfängers* beschrieben.
Das Token wird so generiert, dass es alle fachlich notwendigen Daten beinhaltet, um beim Empfänger evtl. Überprüfungen auf fachliche Korrektheit von Betrag, Nachricht oder Gültigkeitsablaufdatum durchführen zu können. Zusätzlich muss das Token die technischen und fachlichen Daten enthalten, dass die bei der Ausführung der Transaktion ablaufenden Prozesse korrekt initiiert und gesteuert werden können. Die Details für die Anforderungen beim Empfang des Tokens werden weiter unten im Kapitel *Perspektive des Empfängers* beschrieben.
Für die Übertragung per QR-Code wird der zuvor erzeugte Link in ein QR-Code konvertiert. Dabei sind ggf. weitere Konfigurationsdaten wie QR-Code Größe, Korrektur-Level beim QR-Code Scannen und Encoding o.ä. notwendig.
Für die Übertragung per QR-Code wird der zuvor erzeugte Link in ein QR-Code konvertiert. Dabei sind ggf. weitere Konfigurationsdaten wie QR-Code Größe, Korrektur-Level für das QR-Code Scannen und Encoding o.ä. notwendig.
Die technischen Details zum Linkformat bzw. QR-Code werden im noch zu erstellenden technischen Konzept näher beschrieben.
#### ToDo:
Die technischen Details zum Linkformat bzw. QR-Code werden im noch zu erstellenden *Technischen Konzept* näher beschrieben.
### Ausgabe des Links/QR-Codes
@ -136,30 +143,55 @@ bzw. des QR-Codes aussehen könnte.
![UC_Send_Users_Gradido_TxPopupQRCode.png](.\image\UC_Send_Users_Gradido_TxPopupQRCode.png)
## Perspektive des Empfängers
In diesem Kapitel werden alle Aspekte aus Sicht des Empfängers beschrieben. Es werden dabei die Empfangs- und Aktivierungsmöglichkeiten sowie die Interpretation der erhaltenen Daten, die unterschiedlichen Szenarien, die der User durch eine Aktivierung durchlaufen kann und die logischen und finanzkalkulatorischen Schritte des Geldeingangs beschrieben.
### Aktivierung und Validierung des Links
### Starten der Gradido-Sende Valutierung
Sobald der Empfänger den QR-Code gescannt und zu dem Übertragungslink zurück konvertiert bzw. den Übertragungslink erhalten hat, startet mit der Aktivierung des Übertragungslink der eigentliche Valutierungsprozess des gesendeten Gradido-Betrages.
Sobald der Empfänger den QR-Code erhalten, gescannt und zu dem Übertragungslink zurück konvertiert bzw. den Übertragungslink erhalten hat, startet mit der Aktivierung des Übertragungslink der eigentliche Valutierungsprozess des gesendeten Gradido-Betrages.
Der Link führt den User mit einem Request direkt an den Community-Server des Senders. Dieser startet die Dekodierung des im Link enthaltenen Tokens. Als erstes wird geprüft, ob das im Token enthaltene Ablaufdatum noch nicht überschritten ist. Falls dies der Fall sein sollte, dann wird dem User eine Fehlermeldung mit Detailinformationen angezeigt, wie zum Beispiel:
```
Leider ist die Gültigkeit des am <Erzeugungszeitpunkt> erzeugten Links am <Ablaufzeitpunkt> abgelaufen. Für weitere Fragen wenden sie sich bitte an den Absender, um weitere Details zu klären.
Leider ist die Gültigkeit des am <Erzeugungszeitpunkt> erzeugten Links am <Ablaufzeitpunkt> abgelaufen. Zur Klärung von Details und weiteren Fragen wenden sie sich bitte an den Absender, von dem sie diesen Link erhalten haben.
```
Im Falle eines noch gültigen Tokens wird im zweiten Schritt der im Token enthaltene Key verwendet, um die zu diesem Key gespeicherte *vorgebuchte* Transaktion zu lesen. Falls diese nicht mehr existiert, sprich evtl. schon vorher durch eine Aktivierung valutiert wurde, wird dem User eine Fehlermeldung angezeigt mit detaillierten Informationen wie:
Es wird mit Absicht keine Detailinformationen des Absenders in der Fehlermeldung preisgegeben, da nicht bekannt bzw. sichergestellt ist, ob der User, der den Link aktiviert auch der ist, der den Link ursprünglich vom Empfänger erhalten hat.
Im Falle eines noch gültigen Tokens wird im zweiten Schritt der im Token enthaltene Key verwendet, um die zu diesem Key gespeicherte *vorgebuchte* Transaktion zu lesen. Falls diese nicht mehr als offene Transaktion existiert, sprich evtl. schon vorher durch eine Aktivierung valutiert wurde, wird dem User eine Fehlermeldung angezeigt mit detaillierten Informationen wie:
```
Die zu diesem Link gehörende Transaktion <Betrag, Nachricht, Erzeugungszeitpunkt> ist nicht mehr gültig oder wurde am <Valutierungsdatum>. Zur Klärung weiterer Fragen wenden sie sich bitte an den Absender des Übertrangsungslinks bzw. QR-Codes.
Die zu diesem Link gehörende Transaktion <Betrag, Nachricht, Erzeugungszeitpunkt> ist nicht mehr gültig oder wurde am <Valutierungsdatum> schon eingelöst. Zur Klärung weiterer Fragen wenden sie sich bitte an den Absender, von dem sie diesen Übertrangsungslinks bzw. QR-Codes erhalten haben.
```
Sind die Daten der vorgebuchten Transaktion noch offen zur Valutierung, dann wird der User jetzt auf eine Seite geleitet, auf der er zwischen einem Loggin oder einer Registrierung auswählen kann. Der Loggin bzw. Registrierungsprozess unterscheidet sich im Zusammenhang einer Valutierung von den Standard-Loggin bzw. Registrierungsprozessen dahin gehend, dass sie im Anschluss nach der erfolgreichen Anmeldung des Users direkt mit der Valutierung weiter fortfahren. Dies muss auch gewährleistet sein, wenn sich der Empfänger bei einer anderen Community als der SenderCommunity angemeldet hat.
Konnten die Daten der *vorgebuchten* Transaktion zu diesem Key gelesen werden, erfolgt vor dem Starten des eigentlichen Valutierungsprozesses eine inhaltliche Prüfung, ob die Link-Daten zu den gelesenen Daten auch passen, um sicherzugehen, dass keine Manipulationen im Link stattgefunden haben.
#### ToDo:
Wie diese Überprüfung technisch umgesetzt wird, bleibt hier im Detail offen und wird im *Technischen Konzept* näher beschrieben.
Ein mögliche Variante wäre, dass beim Generieren des Links eine Checksumme über den fachlichen Inhalt erzeugt wird, die zusammen mit dem Key in der Datenbank gespeichert ist. Die Checksumme muss zu den fachlichen Daten im Link und in den gelesenen Daten passen, ansonsten gibt es eine Fehlermeldung.
### Start der Valutierung
Mit erfolgreicher *Validierung des Links* wird der User jetzt auf eine Seite geleitet, auf der er zwischen einem Login oder einer Registrierung auswählen kann. Sobald zukünftig Communities unterstützt werden, muss auf dieser Login- bzw. Registrierungsseite auch die Auswahl einer Community möglich sein. Der Login- bzw. Registrierungsprozess unterscheidet sich im Zusammenhang einer Valutierung von den Standard-Login- bzw. -Registrierungsprozessen dahin gehend, dass sie im Anschluss nach der erfolgreichen Anmeldung des Users direkt mit dem Valutierungsprozess weiter fortfahren. Dies muss auch gewährleistet sein, wenn sich der Empfänger bei einer anderen Community als der Sender-Community angemeldet hat. Dies zieht zusätzliche Kommunikationsschritte zwischen den beiden Community-Servern nach sich, da erst mit dem Login bzw. der Registrierung die eigentliche *Empfänger-ID* (Gradido-ID des Empfängers) bekannt und für den *Valutierungsprozess* nutzbar ist.
Um diese einzelnen Schritte nocheinmal zu verdeutlichen stellt das nachfolgende Bild dies schemenhaft dar:
![UC_Send_Users_Gradido_StartValutierung.png](.\image\UC_Send_Users_Gradido_StartValutierung.png)
### Valutierungsprozess
Der eigentliche Valutierungsprozess kann erst starten, sobald durch ein Login bzw. eine Registrierung die *Empfänger-ID* bekannt ist. Somit erhält der Valutierungsprozess folgende Eingabeparameter:
* Sender-ID : die Gradido-ID des Senders
* Empfänger-ID : die Gradido-ID des Empfängers
* Tx-Daten :
* Betrag : der Betrag, der mit der vorgebuchten Transaktion ausgezahlt werden soll
* Nachricht : der Verwendungszweck der Transaktion
* Generierungszeitpunkt : der Zeitpunkt an dem die vorgebuchte Transaktion generiert wurde
* Key : der Primärschlüssel der vorgebuchten Transaktion für einen Direktzugriff auf die schon gespeicherten Daten

View File

@ -0,0 +1,332 @@
<mxfile host="65bd71144e">
<diagram id="-yvLomRvia0eKArNfdSt" name="Seite-1">
<mxGraphModel dx="1088" dy="800" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="2336" pageHeight="1654" math="0" shadow="0">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="56" value="&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Sender-Community&lt;/b&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontSize=16;fillColor=#d5e8d4;gradientColor=#97d077;strokeColor=#82b366;align=left;verticalAlign=top;arcSize=9;" vertex="1" parent="1">
<mxGeometry x="765" y="80" width="555" height="1200" as="geometry"/>
</mxCell>
<mxCell id="92" value="&lt;b&gt;&amp;nbsp; &amp;nbsp;Start der Valutierung&lt;/b&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;fillColor=#f5f5f5;gradientColor=#b3b3b3;strokeColor=#666666;arcSize=5;align=left;verticalAlign=top;" vertex="1" parent="1">
<mxGeometry x="780" y="750" width="530" height="490" as="geometry"/>
</mxCell>
<mxCell id="91" value="&lt;b&gt;&amp;nbsp; &amp;nbsp;Validierung des Links&lt;/b&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;fillColor=#f5f5f5;gradientColor=#b3b3b3;strokeColor=#666666;arcSize=5;align=left;verticalAlign=top;" vertex="1" parent="1">
<mxGeometry x="780" y="200" width="530" height="530" as="geometry"/>
</mxCell>
<mxCell id="55" value="&lt;b&gt;&lt;font style=&quot;font-size: 16px&quot;&gt;Empfang und Aktivierung des Links&lt;/font&gt;&lt;/b&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f5f5f5;gradientColor=#b3b3b3;strokeColor=#666666;verticalAlign=top;" vertex="1" parent="1">
<mxGeometry x="80" y="80" width="630" height="220" as="geometry"/>
</mxCell>
<mxCell id="4" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="2" target="3">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="10" style="edgeStyle=none;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="2" target="9">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="50" y="240"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="2" value="" style="ellipse;fillColor=#000000;strokeColor=none;" vertex="1" parent="1">
<mxGeometry x="30" y="140" width="40" height="40" as="geometry"/>
</mxCell>
<mxCell id="6" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="3" target="5">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="3" value="QR-Code erhalten" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="110" y="140" width="120" height="40" as="geometry"/>
</mxCell>
<mxCell id="8" value="" style="edgeStyle=none;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="5" target="7">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="470" y="160"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="5" value="QR-Code in Link konvertieren" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="270" y="140" width="120" height="40" as="geometry"/>
</mxCell>
<mxCell id="13" value="" style="edgeStyle=none;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="7" target="12">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="630" y="240"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="7" value="Link aktivieren" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="410" y="220" width="120" height="40" as="geometry"/>
</mxCell>
<mxCell id="11" style="edgeStyle=none;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="9" target="7">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="9" value="Link erhalten" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="110" y="220" width="120" height="40" as="geometry"/>
</mxCell>
<mxCell id="16" style="edgeStyle=none;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="12" target="15">
<mxGeometry relative="1" as="geometry">
<Array as="points"/>
</mxGeometry>
</mxCell>
<mxCell id="12" value="Request an Community des Senders" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="570" y="140" width="120" height="40" as="geometry"/>
</mxCell>
<mxCell id="18" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="15" target="17">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="15" value="Request:&lt;br&gt;send/&amp;lt;Token&amp;gt;" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;" vertex="1" parent="1">
<mxGeometry x="995" y="130" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="22" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="17" target="21">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="17" value="decodiere &amp;lt;Token&amp;gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#60a917;fontColor=#ffffff;strokeColor=#2D7600;" vertex="1" parent="1">
<mxGeometry x="995" y="210" width="120" height="40" as="geometry"/>
</mxCell>
<mxCell id="24" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="21" target="23">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="27" value="Ja" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="24">
<mxGeometry x="0.4" y="1" relative="1" as="geometry">
<mxPoint x="12" y="-1" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="29" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="21" target="28">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="21" value="Token abgelaufen?&lt;br&gt;&lt;br&gt;" style="rhombus;whiteSpace=wrap;html=1;rounded=0;fillColor=#60a917;fontColor=#ffffff;strokeColor=#2D7600;" vertex="1" parent="1">
<mxGeometry x="1015" y="280" width="80" height="80" as="geometry"/>
</mxCell>
<mxCell id="26" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="23" target="25">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="23" value="Fehlermeldung" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffcd28;gradientColor=#ffa500;strokeColor=#d79b00;" vertex="1" parent="1">
<mxGeometry x="810" y="290" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="25" value="" style="ellipse;html=1;shape=endState;fillColor=#000000;strokeColor=#000000;" vertex="1" parent="1">
<mxGeometry x="720" y="305" width="30" height="30" as="geometry"/>
</mxCell>
<mxCell id="31" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="28" target="30">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="28" value="lese mit Token-Key die Tx-Daten aus der Datenbank" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#60a917;fontColor=#ffffff;strokeColor=#2D7600;" vertex="1" parent="1">
<mxGeometry x="995" y="380" width="120" height="40" as="geometry"/>
</mxCell>
<mxCell id="35" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="30" target="33">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="36" value="Nein" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="35">
<mxGeometry x="-0.525" relative="1" as="geometry">
<mxPoint x="-7" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="45" style="edgeStyle=none;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="30" target="40">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1055" y="540" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="30" value="Tx-Daten&lt;br&gt;&amp;nbsp;zu Key &lt;br&gt;gefunden?&lt;br&gt;" style="rhombus;whiteSpace=wrap;html=1;rounded=0;fillColor=#60a917;fontColor=#ffffff;strokeColor=#2D7600;" vertex="1" parent="1">
<mxGeometry x="995" y="440" width="120" height="80" as="geometry"/>
</mxCell>
<mxCell id="32" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="33" target="34">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="33" value="Fehlermeldung" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffcd28;gradientColor=#ffa500;strokeColor=#d79b00;" vertex="1" parent="1">
<mxGeometry x="810" y="450" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="34" value="" style="ellipse;html=1;shape=endState;fillColor=#000000;strokeColor=#000000;" vertex="1" parent="1">
<mxGeometry x="720" y="465" width="30" height="30" as="geometry"/>
</mxCell>
<mxCell id="46" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="40" target="42">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="47" value="Nein" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="46">
<mxGeometry x="-0.5" y="1" relative="1" as="geometry">
<mxPoint x="-6" y="-1" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="54" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="40" target="50">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="40" value="Tx noch offen?" style="rhombus;whiteSpace=wrap;html=1;rounded=0;fillColor=#60a917;fontColor=#ffffff;strokeColor=#2D7600;" vertex="1" parent="1">
<mxGeometry x="995" y="540" width="120" height="80" as="geometry"/>
</mxCell>
<mxCell id="41" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="42" target="43">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="42" value="Fehlermeldung" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffcd28;gradientColor=#ffa500;strokeColor=#d79b00;" vertex="1" parent="1">
<mxGeometry x="810" y="550" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="43" value="" style="ellipse;html=1;shape=endState;fillColor=#000000;strokeColor=#000000;" vertex="1" parent="1">
<mxGeometry x="720" y="565" width="30" height="30" as="geometry"/>
</mxCell>
<mxCell id="48" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="50" target="52">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="49" value="Nein" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="48">
<mxGeometry x="-0.5" y="1" relative="1" as="geometry">
<mxPoint x="-6" y="-1" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="58" value="" style="edgeStyle=none;html=1;fontSize=12;" edge="1" parent="1" source="50" target="57">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="50" value="Linkinhalt &lt;br&gt;passt zu gelesenen Tx-Daten?" style="rhombus;whiteSpace=wrap;html=1;rounded=0;fillColor=#60a917;fontColor=#ffffff;strokeColor=#2D7600;" vertex="1" parent="1">
<mxGeometry x="995" y="640" width="120" height="80" as="geometry"/>
</mxCell>
<mxCell id="51" value="" style="edgeStyle=none;html=1;" edge="1" parent="1" source="52" target="53">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="52" value="Fehlermeldung" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffcd28;gradientColor=#ffa500;strokeColor=#d79b00;" vertex="1" parent="1">
<mxGeometry x="810" y="650" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="53" value="" style="ellipse;html=1;shape=endState;fillColor=#000000;strokeColor=#000000;" vertex="1" parent="1">
<mxGeometry x="720" y="665" width="30" height="30" as="geometry"/>
</mxCell>
<mxCell id="60" value="" style="edgeStyle=none;html=1;fontSize=12;" edge="1" parent="1" target="59">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1055" y="900" as="sourcePoint"/>
</mxGeometry>
</mxCell>
<mxCell id="57" value="&lt;font style=&quot;font-size: 12px&quot;&gt;Seite: &lt;br&gt;Begrüßung zur Valutierung &lt;br&gt;mit Auswahl:&lt;br&gt;&lt;div style=&quot;text-align: left&quot;&gt;&lt;span&gt;- Community&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left&quot;&gt;&lt;span&gt;- Login&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left&quot;&gt;&lt;span&gt;- Registrierung&lt;/span&gt;&lt;/div&gt;&lt;/font&gt;" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;fontSize=16;fillColor=#b0e3e6;strokeColor=#0e8088;" vertex="1" parent="1">
<mxGeometry x="975" y="770" width="160" height="130" as="geometry"/>
</mxCell>
<mxCell id="69" style="edgeStyle=none;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fontSize=12;" edge="1" parent="1" source="59" target="67">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="845" y="960"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="70" style="edgeStyle=none;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fontSize=12;" edge="1" parent="1" source="59" target="68">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="975" y="960"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="71" value="Nein" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=12;" vertex="1" connectable="0" parent="70">
<mxGeometry x="-0.8667" relative="1" as="geometry">
<mxPoint x="-10" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="59" value="&lt;font style=&quot;font-size: 12px&quot;&gt;andere Community?&lt;br&gt;&lt;br&gt;&lt;/font&gt;" style="rhombus;whiteSpace=wrap;html=1;fontSize=16;fillColor=#60a917;fontColor=#ffffff;strokeColor=#2D7600;" vertex="1" parent="1">
<mxGeometry x="1015" y="920" width="80" height="80" as="geometry"/>
</mxCell>
<mxCell id="61" value="&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Empfänger-Community&lt;/b&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontSize=16;fillColor=#d5e8d4;gradientColor=#97d077;strokeColor=#82b366;align=left;verticalAlign=top;" vertex="1" parent="1">
<mxGeometry x="1395" y="880" width="360" height="400" as="geometry"/>
</mxCell>
<mxCell id="80" style="edgeStyle=none;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fontSize=12;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="62" target="79">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1660" y="960"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="62" value="Seite:&lt;br&gt;Login-Valutierung" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;fontSize=12;fillColor=#b0e3e6;strokeColor=#0e8088;" vertex="1" parent="1">
<mxGeometry x="1455" y="930" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="81" style="edgeStyle=none;html=1;fontSize=12;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="63" target="79">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1665" y="1080" as="targetPoint"/>
<Array as="points">
<mxPoint x="1660" y="1030"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="82" value="Empfänger-ID" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=12;" vertex="1" connectable="0" parent="81">
<mxGeometry x="0.4963" y="1" relative="1" as="geometry">
<mxPoint as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="63" value="Seite:&lt;br&gt;Register-Valutierung" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;fontSize=12;fillColor=#b0e3e6;strokeColor=#0e8088;" vertex="1" parent="1">
<mxGeometry x="1455" y="1000" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="64" style="edgeStyle=none;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontSize=12;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="59" target="62">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1295" y="960"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="65" style="edgeStyle=none;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontSize=12;" edge="1" parent="1" source="59" target="63">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1360" y="960"/>
<mxPoint x="1360" y="1030"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="66" value="Ja" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=12;" vertex="1" connectable="0" parent="65">
<mxGeometry x="-0.9327" y="-1" relative="1" as="geometry">
<mxPoint as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="74" style="edgeStyle=none;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontSize=12;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="67" target="72">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="845" y="1200"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="78" value="Empfänger-ID" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=12;" vertex="1" connectable="0" parent="74">
<mxGeometry x="-0.6759" y="1" relative="1" as="geometry">
<mxPoint as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="67" value="Seite &lt;br&gt;Login-Valutierung" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;fontSize=12;fillColor=#b0e3e6;strokeColor=#0e8088;" vertex="1" parent="1">
<mxGeometry x="785" y="1010" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="73" style="edgeStyle=none;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontSize=12;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="68" target="72">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="975" y="1200"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="77" value="Empfänger-ID" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=12;" vertex="1" connectable="0" parent="73">
<mxGeometry x="-0.4625" y="1" relative="1" as="geometry">
<mxPoint as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="68" value="Seite &lt;br&gt;Register-Valutierung" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;fontSize=12;fillColor=#b0e3e6;strokeColor=#0e8088;" vertex="1" parent="1">
<mxGeometry x="915" y="1010" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="86" style="edgeStyle=none;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontSize=12;startArrow=classic;startFill=1;" edge="1" parent="1" source="72" target="85">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="90" style="edgeStyle=none;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fontSize=12;startArrow=none;startFill=0;" edge="1" parent="1" source="72" target="89">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="72" value="Valutierungsprozess" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;fontSize=12;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;" vertex="1" parent="1">
<mxGeometry x="1005" y="1170" width="160" height="60" as="geometry"/>
</mxCell>
<mxCell id="76" style="edgeStyle=none;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fontSize=12;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="75" target="72">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1085" y="1110"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="75" value="Request:&lt;br&gt;disburse/&amp;lt;Empfänger-ID&amp;gt;" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;" vertex="1" parent="1">
<mxGeometry x="1115" y="1080" width="180" height="60" as="geometry"/>
</mxCell>
<mxCell id="83" style="edgeStyle=none;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;fontSize=12;" edge="1" parent="1" source="79" target="75">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="84" value="Empfänger-ID" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=12;" vertex="1" connectable="0" parent="83">
<mxGeometry x="-0.2724" y="1" relative="1" as="geometry">
<mxPoint as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="79" value="Disburse-Prozess" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;" vertex="1" parent="1">
<mxGeometry x="1585" y="1080" width="150" height="60" as="geometry"/>
</mxCell>
<mxCell id="85" value="Valutierungsprozess" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;fontSize=12;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;" vertex="1" parent="1">
<mxGeometry x="1425" y="1170" width="160" height="60" as="geometry"/>
</mxCell>
<mxCell id="89" value="" style="ellipse;html=1;shape=endState;fillColor=#000000;strokeColor=#000000;fontSize=12;" vertex="1" parent="1">
<mxGeometry x="1070" y="1320" width="30" height="30" as="geometry"/>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

Binary file not shown.

After

Width:  |  Height:  |  Size: 228 KiB