Merge branch 'master' into 1574-Concept_to_introduce_Gradido-ID

This commit is contained in:
clauspeterhuebner 2022-11-02 22:39:18 +01:00 committed by GitHub
commit 64fb98de4a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 194 additions and 42 deletions

View File

@ -2,6 +2,18 @@
Die Idee besteht darin, dass ein Administrator eine Contribution mit all seinen Attributen und Regeln im System erfasst. Dabei kann er unter anderem festlegen, ob für diese ein Link oder ein QR-Code generiert und über andere Medien wie Email oder Messenger versendet werden kann. Der Empfänger kann diesen Link bzw QR-Code dann über die Gradido-Anwendung einlösen und bekommt dann den Betrag der Contribution als Schöpfung auf seinem Konto gutgeschrieben.
## Ausbaustufen
Die beschriebenen Anforderungen werden in mehrere Ausbaustufen eingeteilt. Damit können nach und nach die Dialoge und Businesslogik schrittweise in verschiedene Releases gegossen und ausgeliefert werden.
### Ausbaustufe 1
Diese Ausbaustufe wird gezielt für die "Dokumenta" im Juni 2022 zusammengestellt. Details siehe weiter unten im speziellen Kapitel "Ausbaustufe 1".
### Ausbaustufe 2
Diese Ausbaustufe wird gezielt für die Anforderungen für das Medidationsportal von "Abraham" zusammegestellt. Details siehe weiter unten im speziellen Kapitel "Ausbaustufe 2".
## Logischer Ablauf
Der logische Ablauf für das Szenario "Activity-Confirmation and booking of Creations " wird in der nachfolgenden Grafik dargestellt. Dabei wird links das Szenario der "interactive Confirmation and booking of Creations" und rechts "automatic Confirmation and booking of Creations" dargestellt. Ziel dieser Grafik ist neben der logischen Ablaufsübersicht auch die Gemeinsamkeiten und Unterschiede der beiden Szenarien herauszuarbeiten.
@ -28,11 +40,11 @@ Der Gültigkeitsstart wird als Default mit dem aktuellen Erfassungszeitpunkt vor
Wie häufig ein User für diese Contribution eine Schöpfung gutgeschrieben bekommen kann, wird über die Auswahl eines Zyklus - stündlich, 2-stündlich, 4-stündlich, etc. - und innerhalb dieses Zyklus eine Anzahl an Wiederholungen definiert. Voreinstellung sind 1x täglich.
![Zyklus](./image/UC_Send_Contribution_Admin-new ContributionZyklus.png)
![img](./image/UC_Send_Contribution_Admin-new_ContributionZyklus.png)
Ob die Contribution über einen versendeten Link bzw. QR-Code geschöpft werden kann, wird mittels der Auswahl "Versenden möglich als" bestimmt.
![send](./image/UC_Send_Contribution_Admin-new ContributionSend.png)
![img](./image/UC_Send_Contribution_Admin-new_ContributionSend.png)
Für die Schöpfung der Contribution können weitere Regeln definiert werden:
@ -44,11 +56,11 @@ Für die Schöpfung der Contribution können weitere Regeln definiert werden:
![new](./image/UC_Send_Contribution_Admin-newContribution.png)
### Ausbaustufe-1:
## Ausbaustufe-1:
Die Ausbaustufe-1 wird gezielt auf die Anforderungen der "Dokumenta" im Juni 2022 abgestimmt.
Die Ausbaustufe-1 wird gezielt auf die Anforderungen der "Dokumenta" im Juni 2022 abgestimmt.
#### Contribution-Erfassungsdialog (Adminbereich)
### Contribution-Erfassungsdialog (Adminbereich)
Es werden folgende Anforderungen an den Erfassungsdialog einer Contribution gestellt:
@ -64,14 +76,12 @@ Es werden folgende Anforderungen an den Erfassungsdialog einer Contribution gest
| VersendenMöglich | - hier wird "als Link / QR-Code" voreingestellt |
| alle weiteren Attribute | - entfallen für diese Ausbaustufe<br />- die GUI-Komponenten können optional schon im Dialog eingebaut und angezeigt werden<br />- diese GUI-Komponenten müssen wenn sichtbar disabled sein und dürfen damit keine Eingaben entgegen nehmen |
#### Ablauflogik
### Ablauflogik
Für die Ausbaustufe-1 wird gemäß der Beschreibung aus dem Kapitel "Logischer Ablauf" nur die "automatic Confirmation and booking of Creations" umgesetzt. Die interaktive Variante - sprich Ablösung des EloPage Prozesses - mit "interactive Confirmation and booking of Creations" bleibt für eine spätere Ausbaustufe aussen vor.
Das Regelwerk in der Businesslogik wird gemäß der reduzierten Contribution-Attribute aus dem Erfassungsdialog, den vordefinierten Initialwerten und der daraus resultierenden Variantenvielfalt vereinfacht.
#### Kriterien "Dokumenta"
* Es soll eine "Dokumenta"-Contribution im Admin-Bereich erfassbar sein und in der Datenbank als ContributionLink gespeichert werden.
@ -91,6 +101,66 @@ Das Regelwerk in der Businesslogik wird gemäß der reduzierten Contribution-Att
* es erfolgt eine übliche Schöpfungstransaktion nach der Bestätigung der Contribution
* die Schöpfungstransaktion schreibt den Betrag der Contribution dem Kontostand des Users gut
## Ausbaustufe-2
Die Ausbaustufe-2 wird gezielt auf die Anforderungen zur Anbindung des Meditationsportals von Abraham im Oktober 2022 abgestimmt.
### Contribution-Erfassungsdialog (Adminbereich)
Es werden folgende Anforderungen an den Erfassungsdialog einer Contribution gestellt:
| Attribut | Beschreibung |
| ---------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| GültigBis | - das Datum, wie lange die Contribution gültig und damit einlösbar ist<br />- für diese Ausbaustufe soll ein offenes Ende möglich sein, daher bleibt dieses Attribut leer |
| Zyklus | - Angabe wie häufig eine Contribution gutgeschrieben werden kann<br />- als Auswahlliste (Combobox) geplant, aber für diese Ausbaustufe nur mit dem Wert "täglich" vorbelegt |
| Wiederholungen | - Anzahl an Wiederholungen pro Zyklus<br />- für diese Ausbaustufe wird der Wert "1" vorbelegt -> somit gilt: ein User kann diese Contribution nur 1x täglich einlösen |
| alle weiteren noch nicht vorhandenen Attribute | - entfallen für diese Ausbaustufe<br />- die GUI-Komponenten können optional schon im Dialog eingebaut und angezeigt werden<br />- diese GUI-Komponenten müssen wenn sichtbar disabled sein und dürfen damit keine Eingaben entgegen nehmen |
### Ablauflogik
Für die Ausbaustufe-2 und der inzwischen umgesetzten Ablösung des "EloPage Contribution Erfassungsprozesses" wird gemäß der Beschreibung aus dem Kapitel "Logischer Ablauf" die "automatic Confirmation and booking of Creations" sowie die interaktive Variante "interactive Confirmation and booking of Creations" mit berücksichtigt.
Das Regelwerk in der Businesslogik wird gemäß der noch nicht vollumfänglich geplanten Contribution-Attribute aus dem Erfassungsdialog, den vordefinierten Initialwerten und der daraus resultierenden Variantenvielfalt vereinfacht.
#### Kriterien "Meditationsportal (Abraham)"
* Es soll eine "GlobalMeditation"-Contribution nur im Admin-Bereich erfassbar sein und in der Datenbank als ContributionLink gespeichert werden.
* Es wird ein offenes Ende als Gesamtlaufzeit dieser Contribution benötigt, was durch ein leeres GültigBis-Datum ausgedrückt bzw. erfasst werden soll.
* Die "Meditationsportal"-Contribution kann von einem User maximal 1x täglich aktiviert werden. Dies wird über die Erfassung des Attributes "Zyklus" = täglich und des Attributes "Wiederholungen" = 1 ermöglicht.
* Ein User kann mit diesem Link nur die Menge an GDDs schöpfen, die in der Contribution als "Betrag" festgelegt ist
* Die "GlobalMeditation"-Contribution kann als Link / QR-Code erzeugt, angezeigt und in die Zwischenablage kopiert werden
* Jeder beliebige User kann den Link / QR-Code aktivieren
* der Link führt auf eine Gradido-Seite, wo der User sich anmelden oder registrieren kann
* mit erfolgreichem Login bzw. Registrierung wird der automatische Bestätigungs- und Schöpfungsprozess getriggert
* es erfolgt eine Überprüfung der definierten Contribution-Regeln für den angemeldeten User:
* Gültigkeit: liegt die Aktivierung im Gültigkeitszeitraum der Contribution
* Zyklus und WIederholungen: bei einem Zyklus-Wert = "täglich" und einem Wiederholungswert = 1 darf der User den Betrag dieser Contribution nur einmal am Tag schöpfen. Es gibt keine Überprüfung eines zeitlichen Mindestabstandes zwischen zwei Schöpfungen an zwei aufeinanderfolgenden Tagen.
* max. schöpfbarer Gradido-Betrag pro Monat: wenn der Betrag der Contribution plus der Betrag, den der User in diesem Monat schon geschöpft hat, den maximal schöpfbaren Betrag pro Monat von 1000 GDD übersteigt, dann wird die Schöpfung dieser Contribution abgelehnt
* mit erfolgreich durchlaufenen Regelprüfungen wird ein "besätigter" aber "noch nicht gebuchten" Eintrag in der "Contributions"-Tabelle erzeugt
* ein "bestätigter" aber "noch nicht gebuchter" "Contributions"-Eintrag stößt eine Schöpfungstransaktion für den User an
* es erfolgt eine übliche Schöpfungstransaktion mit automatischer Bestätigung der Contribution
* die Schöpfungstransaktion schreibt den Betrag der Contribution dem Kontostand des Users gut
## Ausbaustufe-3
### Änderungen im Registrierungsprozess
Aktuell treten Probleme mit der Aktivierung des ContributionLinks während des Registrierungsprozesses auf. Sobald der User bei der Registrierung sein Konto zwar angelegt, aber die erhaltene Email-Confirmation nicht abgeschlossen und damit sein Konto noch nicht aktiviert hat, kann derzeit der Redeem-Link nicht als Transaktion durchgeführt werden. Die Gültigkeitsdauer des Redeemlink reicht meist nicht bis der User sein Konto aktiviert. Daher wird nun die Idee verfolgt die Einlösung des Redeemlinks schon während der Anlage des inaktiven Kontos als "pendingRedeem Contribution" anzulegen. Sobald dann der User sein Konto per Email-Confirmation aktiviert, soll die "pendingRedeem Contribution" automatisch zu einer Tranaktion überführt und der Betrag des Redeemlinks auf das Konto des Users gebucht werden.
Folgende Schritte und Änderungen sind dabei vorgesehen (siehe in der Grafik rechts im orange markierten Bereich im Vergleich zur Grafik im Kapitel "Logischer Ablauf"):
![img](./image/Ablauf_manuelle_auto_Creations_2.png)
* Der User landet mit Aktivierung eines Redeem-Links wie bisher auf der Login/Registrierungsseite, wobei wie bisher schon der Redeemlink als Parameter in den Registrierungsprozess übergeben wird.
* Mit der Anlage des neuen aber noch inaktiven User-Kontos und einer Übergabe eines Redeemlinks wird der Redeemlink zu einer "pendingRedeem Contribution" für den neuen User angelegt, aber noch nicht als Transaktion gebucht
* nach Anlage des inaktiven User-Kontos und bevor die Confirmation-Email abgeschickt wird, erfolgt das Schreiben eines neuen Contribution-Eintrages mit den Daten des Redeem-Links.
* Die neu angelegte Contribution wird im Status "pendingRedeem" gespeichert. Dieser neue Status ist notwendig, um im AdminInterface die normalen "pending Contributions" von den "pendingRedeem Contributions" zu unterscheiden. Denn der Admin soll zum Einen diese "pendingRedeem Contributions" weder bestätigen noch ablehnen können und zum Anderen sollen die "pendingRedeem Contributions" automatisiert bestätigt und gebucht werden können. Daher wird eine Unterscheidung zwischen den interaktiv angelegten Contributions im Status pending und den per Redeem-Link angelegten Contributions im Status pending benötigt.
* Damit endet erst einmal die weitere Verarbeitung der Redeem-Link-Aktivierung
* Mit Aktivierung des Links in der Email-Confirmation und damit der Aktivierung des User-Kontos erfolgt automatisch die Buchung der "pendingRedeem Contribution" und führt damit zur eigentlichen Buchung des Redeem-Betrages auf das User Konto.
* mit Erhalt der Email-Confirmation Aktivierung wird das User-Konto aktiviert
* Nach der Aktivierung des User-Kontos erfolgt eine Prüfung auf schon vorhandene "pendingRedeem Contributions" aus vorherigen Redeem-Link-Aktivierungen
* Jede vorhandene "pendingRedeem Contribution" wird jetzt automatisch bestätigt und zu einer Transaktion überführt
* Mit der bestätigten Contribution und daraus überführten Transaktion erhält der User eine Bestätigungsemail mit den Contribution spezifischen Daten.
## Datenbank-Modell
@ -100,34 +170,36 @@ Das nachfolgende Bild zeigt das Datenmodell vor der Einführung und Migration au
![Datenbankmodell](./image/DB-Diagramm_20220518.png)
### Datenbank-Änderungen
### Ausbaustufe-1
#### Datenbank-Änderungen
Die Datenbank wird in ihrer vollständigen Ausprägung trotz Ausbaustufe-1 wie folgt beschrieben umgesetzt.
#### neue Tabellen
##### neue Tabellen
##### contribution_links - Tabelle
###### contribution_links - Tabelle
| Name | Typ | Nullable | Default | Kommentar |
| ------------------------------- | ------------ | :------: | :------------: | -------------------------------------------------------------------------------------------------------------------------------------- |
| id | INT UNSIGNED | NOT NULL | auto increment | PrimaryKey |
| name | varchar(100) | NOT NULL | | unique Name |
| description | varchar(255) | | | |
| name | varchar(100) | NOT NULL | | unique Name |
| description | varchar(255) | | | |
| valid_from | DATETIME | NOT NULL | NOW | |
| valid_to | DATETIME | | NULL | |
| amount | DECIMAL | NOT NULL | | |
| valid_to | DATETIME | | NULL | |
| amount | DECIMAL | NOT NULL | | |
| cycle | ENUM | NOT NULL | ONCE | ONCE, HOUR, 2HOUR, 4HOUR, 8HOUR, HALFDAY, DAY, 2DAYS, 3DAYS, 4DAYS, 5DAYS, 6DAYS, WEEK, 2WEEKS, MONTH, 2MONTH, QUARTER, HALFYEAR, YEAR |
| max_per_cycle | INT UNSIGNED | NOT NULL | 1 | |
| max_amount_per_month | DECIMAL | | NULL | |
| total_max_count_of_contribution | INT UNSIGNED | | NULL | |
| max_account_balance | DECIMAL | | NULL | |
| min_gap_hours | INT UNSIGNED | | NULL | |
| created_at | DATETIME | | NOW | |
| deleted_at | DATETIMEBOOL | | NULL | |
| code | varchar(24) | | NULL | |
| link_enabled | BOOL | | NULL | |
| max_amount_per_month | DECIMAL | | NULL | |
| total_max_count_of_contribution | INT UNSIGNED | | NULL | |
| max_account_balance | DECIMAL | | NULL | |
| min_gap_hours | INT UNSIGNED | | NULL | |
| created_at | DATETIME | | NOW | |
| deleted_at | DATETIMEBOOL | | NULL | |
| code | varchar(24) | | NULL | |
| link_enabled | BOOL | | NULL | |
##### contributions -Tabelle
###### contributions -Tabelle
| Name | Typ | Nullable | Default | Kommentar |
| --------------------- | ------------ | -------- | -------------- | -------------------------------------------------------------------------------- |
@ -145,9 +217,9 @@ Die Datenbank wird in ihrer vollständigen Ausprägung trotz Ausbaustufe-1 wie f
| booked_at | DATETIME | | NULL | date, when the system has booked the amount of the activity on the users account |
| deleted_at | DATETIME | | NULL | soft delete |
#### zu migrierende Tabellen
##### zu migrierende Tabellen
##### Tabelle admin_pending_creations
###### Tabelle admin_pending_creations
Diese Tabelle wird im Rahmen dieses UseCase migriert in die neue Tabelle contributions...
@ -168,6 +240,18 @@ Diese Tabelle wird im Rahmen dieses UseCase migriert in die neue Tabelle contrib
...und kann nach Übernahme der Daten in die neue Tabelle gelöscht werden oder es erfolgen die Änderungen sofort auf der Ursprungstabelle.
### Zielmodell
#### Zielmodell
![Contributions-DB](./image/DB-Diagramm_Contributions.png)
### Ausbaustufe-2
Für die Ausbaustufe-2 sind keine Datenbank-Änderungen notwendig. Gemäß dem Zielmodell sind alle notwendigen Tabellen und Attribute schon vorhanden.
#### Zielmodell
![img](./image/DB-Diagramm_Contributions_Stufe_2.png)
### Ausbaustufe-3
Für die Ausbaustufe-3 dürften im Grunde ebenfalls keine zusätzlichen Datenbankänderungen notwendig sein. Denn für eine "pending Contribution" und deren Confirmation mit Tranaktionsüberführng sind ebenfalls schon alle Attribute vorhanden.

View File

@ -1,6 +1,6 @@
<mxfile host="65bd71144e">
<diagram id="-Bvenr9G4hMm7q4_ZwMA" name="Seite-1">
<mxGraphModel dx="3755" dy="1067" 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">
<mxGraphModel dx="3699" dy="1067" 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"/>
@ -183,31 +183,31 @@
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="63" value="contribution_links&lt;br style=&quot;font-size: 24px&quot;&gt;&lt;span style=&quot;font-size: 20px&quot;&gt;id = X&lt;br&gt;code = X-link&lt;br&gt;&lt;/span&gt;" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;fontSize=24;size=0.05263157894736842;" parent="1" vertex="1">
<mxGeometry x="1560" y="670" width="380" height="100" as="geometry"/>
<mxGeometry x="1560" y="592.5" width="380" height="85" as="geometry"/>
</mxCell>
<mxCell id="121" value="" style="edgeStyle=none;html=1;fontSize=16;" parent="1" source="65" target="71" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="65" value="users&lt;br style=&quot;font-size: 24px&quot;&gt;&lt;font style=&quot;font-size: 20px&quot;&gt;ID=Y&lt;/font&gt;" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;fontSize=24;size=0.05263157894736842;" parent="1" vertex="1">
<mxGeometry x="1990" y="930" width="170" height="60" as="geometry"/>
<mxGeometry x="1990" y="925" width="170" height="60" as="geometry"/>
</mxCell>
<mxCell id="128" value="" style="edgeStyle=none;html=1;fontSize=20;strokeWidth=1;" parent="1" source="67" target="127" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="67" value="lese Contribution zu aktiviertem Link" style="rounded=1;whiteSpace=wrap;html=1;fontSize=20;fillColor=#008a00;strokeColor=#005700;fontColor=#ffffff;" parent="1" vertex="1">
<mxGeometry x="1250" y="690" width="240" height="60" as="geometry"/>
<mxGeometry x="1250" y="605" width="240" height="60" as="geometry"/>
</mxCell>
<mxCell id="120" value="" style="edgeStyle=none;html=1;fontSize=16;" parent="1" source="69" target="71" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="122" value="" style="edgeStyle=none;html=1;fontSize=16;" parent="1" source="69" target="79" edge="1">
<mxCell id="122" value="" style="edgeStyle=none;html=1;fontSize=16;entryX=0.25;entryY=0;entryDx=0;entryDy=0;exitX=0.417;exitY=0.991;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="69" target="79" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="69" value="erzeuge aus ContributionLink zu angemeldetem User eine bestätigte Contribution" style="rounded=1;whiteSpace=wrap;html=1;fontSize=20;fillColor=#008a00;strokeColor=#005700;fontColor=#ffffff;" parent="1" vertex="1">
<mxGeometry x="1250" y="907.5" width="240" height="110" as="geometry"/>
<mxGeometry x="1210" y="900" width="240" height="110" as="geometry"/>
</mxCell>
<mxCell id="71" value="contributions&lt;br style=&quot;font-size: 24px&quot;&gt;&lt;font style=&quot;font-size: 20px&quot;&gt;confirmed_at = NOW, contribution_links_id=X, user_id=Y&lt;/font&gt;" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;fontSize=24;size=0.05263157894736842;" parent="1" vertex="1">
<mxGeometry x="1560" y="917.5" width="380" height="90" as="geometry"/>
<mxGeometry x="1560" y="910" width="380" height="90" as="geometry"/>
</mxCell>
<mxCell id="72" value="" style="edgeStyle=none;html=1;fontSize=24;" parent="1" edge="1">
<mxGeometry relative="1" as="geometry">
@ -317,15 +317,15 @@
</mxGeometry>
</mxCell>
<mxCell id="109" value="veröffentlichter &lt;br&gt;Link / QR-Code für&lt;br&gt;eine Contribution" style="ellipse;whiteSpace=wrap;html=1;fontSize=20;rounded=1;fillColor=#d0cee2;strokeColor=#56517e;" parent="1" vertex="1">
<mxGeometry x="2010" y="410" width="310" height="90" as="geometry"/>
<mxGeometry x="2020" y="310" width="310" height="90" as="geometry"/>
</mxCell>
<mxCell id="118" value="" style="edgeStyle=none;html=1;fontSize=16;" parent="1" target="113" edge="1">
<mxCell id="118" value="" style="edgeStyle=none;html=1;fontSize=16;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" target="113" edge="1" source="111">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1370" y="570" as="sourcePoint"/>
</mxGeometry>
</mxCell>
<mxCell id="111" value="User aktiviert &lt;br&gt;Link / QR-Code" style="rounded=1;whiteSpace=wrap;html=1;fontSize=20;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="1250" y="510" width="240" height="50" as="geometry"/>
<mxGeometry x="1250" y="450" width="240" height="50" as="geometry"/>
</mxCell>
<mxCell id="115" style="edgeStyle=none;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontSize=16;" parent="1" source="113" target="114" edge="1">
<mxGeometry relative="1" as="geometry"/>
@ -334,10 +334,10 @@
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="113" value="User führt &lt;br&gt;Login / Register aus" style="rounded=1;whiteSpace=wrap;html=1;fontSize=20;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="1250" y="597.5" width="240" height="50" as="geometry"/>
<mxGeometry x="1250" y="530" width="240" height="50" as="geometry"/>
</mxCell>
<mxCell id="114" value="users" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;fontSize=24;size=0.05263157894736842;" parent="1" vertex="1">
<mxGeometry x="1990" y="592.5" width="170" height="60" as="geometry"/>
<mxGeometry x="1990" y="525" width="170" height="60" as="geometry"/>
</mxCell>
<mxCell id="123" style="edgeStyle=none;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontSize=16;" parent="1" source="124" target="125" edge="1">
<mxGeometry relative="1" as="geometry"/>
@ -351,7 +351,7 @@
<mxCell id="125" value="users" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;fontSize=24;size=0.05263157894736842;" parent="1" vertex="1">
<mxGeometry x="880" y="592.5" width="170" height="60" as="geometry"/>
</mxCell>
<mxCell id="129" value="" style="edgeStyle=none;html=1;fontSize=20;strokeWidth=1;" parent="1" source="127" target="69" edge="1">
<mxCell id="129" value="" style="edgeStyle=none;html=1;fontSize=20;strokeWidth=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="127" target="131" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="130" value="Ja" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=20;" parent="129" vertex="1" connectable="0">
@ -359,8 +359,76 @@
<mxPoint as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="127" value="Contribution &lt;br&gt;und Regel &lt;br&gt;valide?" style="rhombus;whiteSpace=wrap;html=1;fontSize=20;fillColor=#008a00;strokeColor=#005700;fontColor=#ffffff;rounded=1;" parent="1" vertex="1">
<mxGeometry x="1250" y="770" width="240" height="100" as="geometry"/>
<mxCell id="127" value="Contribution &lt;br&gt;und Regel valide?&lt;br&gt;" style="rhombus;whiteSpace=wrap;html=1;fontSize=20;fillColor=#008a00;strokeColor=#005700;fontColor=#ffffff;rounded=1;" parent="1" vertex="1">
<mxGeometry x="1250" y="685" width="240" height="75" as="geometry"/>
</mxCell>
<mxCell id="132" style="edgeStyle=none;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="131" target="69">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1660" y="780"/>
<mxPoint x="1330" y="780"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="134" style="edgeStyle=none;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="131" target="133">
<mxGeometry relative="1" as="geometry">
<Array as="points"/>
</mxGeometry>
</mxCell>
<mxCell id="135" value="Nein" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=16;" vertex="1" connectable="0" parent="134">
<mxGeometry x="-0.4968" relative="1" as="geometry">
<mxPoint as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="131" value="user Konto&lt;br&gt;active?" style="rhombus;whiteSpace=wrap;html=1;fontSize=20;fillColor=#008a00;strokeColor=#005700;fontColor=#ffffff;rounded=1;" vertex="1" parent="1">
<mxGeometry x="1540" y="685" width="240" height="75" as="geometry"/>
</mxCell>
<mxCell id="137" value="" style="edgeStyle=none;html=1;fontSize=16;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="133" target="138">
<mxGeometry relative="1" as="geometry">
<mxPoint x="2210" y="722.5" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="133" value="erzeuge aus ContributionLink zu angemeldetem User eine pending Contribution" style="rounded=1;whiteSpace=wrap;html=1;fontSize=20;fillColor=#008a00;strokeColor=#005700;fontColor=#ffffff;" vertex="1" parent="1">
<mxGeometry x="1830" y="685" width="300" height="75" as="geometry"/>
</mxCell>
<mxCell id="138" value="Ende Redeem-Aktivierung" style="ellipse;whiteSpace=wrap;html=1;fontSize=20;rounded=1;fillColor=#dae8fc;strokeColor=#6c8ebf;gradientColor=#7ea6e0;" vertex="1" parent="1">
<mxGeometry x="2170" y="677.5" width="110" height="90" as="geometry"/>
</mxCell>
<mxCell id="141" style="edgeStyle=none;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;fontSize=16;" edge="1" parent="1" source="139" target="140">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="139" value="Start Konto-&lt;br&gt;bestätigung" style="ellipse;whiteSpace=wrap;html=1;fontSize=20;rounded=1;fillColor=#f5f5f5;strokeColor=#666666;gradientColor=#b3b3b3;" vertex="1" parent="1">
<mxGeometry x="2170" y="805" width="110" height="90" as="geometry"/>
</mxCell>
<mxCell id="143" style="edgeStyle=none;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;fontSize=16;" edge="1" parent="1" source="140" target="142">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="140" value="User führt &lt;br&gt;Email-Bestätigung aus" style="rounded=1;whiteSpace=wrap;html=1;fontSize=20;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="1930" y="825" width="210" height="50" as="geometry"/>
</mxCell>
<mxCell id="145" value="" style="edgeStyle=none;html=1;fontSize=16;" edge="1" parent="1" source="142" target="144">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="142" value="Konto wird active" style="rounded=1;whiteSpace=wrap;html=1;fontSize=20;fillColor=#008a00;strokeColor=#005700;fontColor=#ffffff;" vertex="1" parent="1">
<mxGeometry x="1720" y="827.5" width="180" height="47.5" as="geometry"/>
</mxCell>
<mxCell id="147" value="" style="edgeStyle=none;html=1;fontSize=16;" edge="1" parent="1" source="144" target="146">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="144" value="für alle pending Contributions" style="whiteSpace=wrap;html=1;fontSize=20;fillColor=#008a00;strokeColor=#005700;fontColor=#ffffff;rounded=1;" vertex="1" parent="1">
<mxGeometry x="1540" y="825" width="150" height="50" as="geometry"/>
</mxCell>
<mxCell id="149" style="edgeStyle=none;html=1;entryX=0;entryY=0.25;entryDx=0;entryDy=0;fontSize=16;" edge="1" parent="1" source="146" target="71">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="150" style="edgeStyle=none;html=1;entryX=0.896;entryY=0.01;entryDx=0;entryDy=0;entryPerimeter=0;fontSize=16;exitX=0.642;exitY=0.988;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="1" source="146" target="79">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="146" value="erzeuge bestätigte Contribution" style="whiteSpace=wrap;html=1;fontSize=20;fillColor=#008a00;strokeColor=#005700;fontColor=#ffffff;rounded=1;" vertex="1" parent="1">
<mxGeometry x="1390" y="810" width="120" height="80" as="geometry"/>
</mxCell>
<mxCell id="151" value="" style="rounded=0;whiteSpace=wrap;html=1;fontSize=16;opacity=30;fillColor=#ffcd28;gradientColor=#ffa500;strokeColor=#d79b00;" vertex="1" parent="1">
<mxGeometry x="1180" y="680" width="1140" height="220" as="geometry"/>
</mxCell>
</root>
</mxGraphModel>

Binary file not shown.

After

Width:  |  Height:  |  Size: 536 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB