gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-docs] 02/02: redo diagram in dot


From: gnunet
Subject: [taler-docs] 02/02: redo diagram in dot
Date: Sat, 08 Apr 2023 17:47:12 +0200

This is an automated email from the git hooks/post-receive script.

grothoff pushed a commit to branch master
in repository docs.

commit 160809d12e9a956ffb4cbef0e3cb8cbb72804114
Author: Christian Grothoff <christian@grothoff.org>
AuthorDate: Sat Apr 8 17:47:08 2023 +0200

    redo diagram in dot
---
 Makefile                                           |  4 +-
 .../037-wallet-transactions-lifecycle.rst          | 66 ++++++++++++++--------
 transaction-common-states.dot                      | 28 +++++++++
 3 files changed, 74 insertions(+), 24 deletions(-)

diff --git a/Makefile b/Makefile
index 6bb8992..cb844de 100644
--- a/Makefile
+++ b/Makefile
@@ -53,6 +53,8 @@ clean:
 
 arch-api.png: arch-api.dot
        dot -Tpng arch-api.dot > arch-api.png
+transaction-common-states.png: transaction-common-states.dot
+       dot -Tpng transaction-common-states.dot > transaction-common-states.png
 coin.png: coin.dot
        dot -Tpng coin.dot > coin.png
 deposit.png: deposit.dot
@@ -60,7 +62,7 @@ deposit.png: deposit.dot
 reserve.png: reserve.dot
        dot -Tpng reserve.dot > reserve.png
 
-diagrams: arch-api.png coin.png
+diagrams: arch-api.png coin.png deposit.png reserve.png 
transaction-common-states.png
 
 
 # The html-linked builder does not support caching, so we
diff --git a/design-documents/037-wallet-transactions-lifecycle.rst 
b/design-documents/037-wallet-transactions-lifecycle.rst
index 8a8df2e..64ec242 100644
--- a/design-documents/037-wallet-transactions-lifecycle.rst
+++ b/design-documents/037-wallet-transactions-lifecycle.rst
@@ -23,7 +23,7 @@ and aborting have transaction-specific sub-states, denoted by 
``state(substate)`
 
 ``initial``: The initial state is the result a user interaction. A transaction
 may have more than one initial state (if it is started in multiple ways) or 
none
-(if it's the result of another process)
+(if it's the result of another process).
 
 ``pending``: A pending transaction waits for some external event/service.
 The transaction stays pending until its change on the wallet's material balance
@@ -31,12 +31,13 @@ is finished. Any pending state can be suspended and resumed.
 
 There are some other distinctions for pending transactions:
 
-* long-polling vs exponential backoff: A pending transaction is either waiting
+* long-polling vs. exponential backoff: A pending transaction is either waiting
   on an external service by making a long-polling request or by repeating 
requests
   with exponential back-off.
 * ``lastError``: A pending transaction is either clean (i.e. the network 
interaction
   is literally active in transmission or the external service successfully
-  communicated that it is not ready yet) or has a ``lastError``, which is a 
``TalerErrorDetails``
+  communicated that it is not ready yet and this is perfectly normal)
+  or has a ``lastError``, which is a ``TalerErrorDetails``
   object with details about what happened during the last attempt to proceed
   with the transaction.
 
@@ -47,7 +48,7 @@ never has a ``lastError`` but is considered successful.
 complete the transaction, the wallet is taking active steps to abort it. The 
``lastError``
 indicates errors the wallet experienced while taking active steps to abort the 
transaction.
 
-``aborted``: Similar to a ``done`` transaction, but the transaction was 
successfully aborted
+``aborted``: Similar to ``done``, but the transaction was successfully aborted
 instead of successfully finished. It will have the information of when 
(timestamp) it was
 aborted and in which pending sub-state the abort action was initiated. Also, 
we can
 include more information information relevant to the transaction in 
`abortReason`
@@ -55,11 +56,11 @@ include more information information relevant to the 
transaction in `abortReason
 ``suspended``: Similar to a ``aborted`` transaction, but the transaction was 
could be
 resumed and may then still succeed.
 
-``failed``: Similar to ``done``, but the transaction could not even be aborted 
successfully.
+``failed``: Similar to ``done``, but the transaction could not even be aborted 
properly.
 
 ``deleted``: A ``deleted`` state is always a final state.  We only use this
 state for illustrative purposes. In the implementation, the data associated
-with the transaction would be deleted.
+with the transaction would be literally deleted.
 
 
 Common Transitions
@@ -67,12 +68,12 @@ Common Transitions
 
 Transitions are actions or other events.
 
-``[action:delete]``: Deleting a transaction (also called "forgetting" in the 
UI)
-completely deletes the transaction in the database.  Depending on the type of
+``[action:delete]``: Deleting a transaction
+completely deletes the transaction from the database.  Depending on the type of
 transaction, some of the other data *resulting* from the transaction might
 still survive deletion. For example, deleting a withdrawal transaction does not
 delete already successfully withdrawn coins. Deleting is only safe (no money 
lost)
-on initial and final state (failed, aborted, done)
+on initial and final states (failed, aborted, done).
 
 ``[action:retry]``: Retrying a transaction *(1.)* stops ongoing long-polling
 requests for the transaction *(2.)* resets the retry timeout *(3.)* re-runs the
@@ -84,35 +85,51 @@ states: ``pending(*)`` and ``aborting(*)``.
    Should we show the retry timeout in the UI somewhere?  Should we show it in 
dev mode?
 
    SEBASJM: Since the wallet will retry anyway, maybe is better if we replace 
the "retry"
-   button with a "try now" button and a side text "retrying in xxx seconds"
+   button with a "try now" button and a side text "retrying in xxx seconds".
+
+   CG: Instead of a side text, this *might* make a good mouse-over hint for
+   a "retry" (or "try now") button. I would not make this overly visible with
+   side-text as the information is not that important. The text should also be
+   "retrying next at XXX" using an absolute time XXX --- otherwise the UI would
+   be way too busy recomputing/updating all of these strings: Using an 
absolute time,
+   we only have to redraw anything once a retry actually happened. Given that
+   retries should basically never be > 24h (we can impose a hard cap), the 
absolute
+   time can just be in the format HH:MM:SS (without day).
 
 ``[action:abort]``: Aborting a transaction either directly stops processing 
for the
-transaction and puts it in an ``aborted`` state or starts the necessary steps 
to
+transaction and puts it in an ``aborted`` state, or starts the necessary steps 
to
 actively abort the transaction (e.g. to avoid losing money) and puts it in an
 ``aborting`` state.
 
-``[action:suspend]``: Suspends a pending transaction, stopping any associated 
network activities, but with a chance of trying
-again at a later time. This could be useful if a user needs to save battery 
power or bandwidth and an operation is expected
-to take longer (such as a backup, recovery or very large withdrawal operation).
+``[action:suspend]``: Suspends a pending transaction, stopping any associated
+network activities, but with a chance of trying again at a later time. This
+could be useful if a user needs to save battery power or bandwidth and an
+operation is expected to take longer (such as a backup, recovery or very large
+withdrawal operation).
 
-``[action:resume]``: Suspended transactions may be resumed, placing them back 
into a pending state.
+``[action:resume]``: Suspended transactions may be resumed, placing them back
+into a pending state.
 
-``[action:abort-force]``: Directly puts an ``aborting`` transaction into the 
``failed`` state.
+``[action:abort-force]``: Directly puts an ``aborting`` transaction into the
+``failed`` state.
 
 
-Whether aborting or resuming is possible depends on the transaction type, and 
usually only one
-of the two choices should be offered.
+Whether aborting or resuming are possible depends on the transaction type, and
+usually only one of the two choices should be offered.
 
 
-.. image:: ../transaction-common-states.svg
+.. image:: ../transaction-common-states.png
   :width: 400
 
-Boxed label means end state, where it is safe to delete the transaction record 
since no work is due.
 
-Blue arrows means mean user-triggered actions
+Boxed labels indicate an end state in which it is safe to delete the
+transaction record since no work is due.
+
+Blue arrows are used for user-triggered actions (via UI buttons).
+
 
 Common pending sub-states
----------------------------------
+-------------------------
 
 During the pending state the transaction can go through several sub-states 
before
 reaching a final state. Some of this sub-states are shared between different
@@ -627,7 +644,10 @@ The payment succeed but if auto-refund-check is active it 
will be checking for r
 Alternatives
 ============
 
-* each transaction could be treated completely separately
+* Each transaction could be treated completely separately; however, uniform
+  terminology for actions (and thus button labels) is likely more helpful for
+  the user experience.
+
 
 Drawbacks
 =========
diff --git a/transaction-common-states.dot b/transaction-common-states.dot
new file mode 100644
index 0000000..890cc23
--- /dev/null
+++ b/transaction-common-states.dot
@@ -0,0 +1,28 @@
+digraph G {
+
+  initial[label="", shape="circle"];
+  pending[label="pending"];
+  done[label="done", shape="box"];
+  aborted[label="aborted", shape="box"];
+  aborting[label="aborting"];
+  failed[label="failed", shape="box"];
+  suspended[label="suspended"];
+
+  subgraph {
+    rank = same; pending;suspended;
+  }
+
+  subgraph {
+    rank = same; done; aborted; failed;
+  }
+
+  initial->pending;
+  pending->suspended [color="blue",label="suspend"];
+  suspended->pending [color="blue",label="resume"];
+  pending->done [color="green",label="success"];
+  pending->failed [color="red",label="error"];
+  pending->aborting [color="blue",label="abort"];
+  pending->aborted [color="blue",label="abort"];
+  aborting->aborted [color="green",label="success"];
+  aborting->failed [color="red",label="error"];
+}

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]