From 4ec24a69cd70ffc5d78f237a5c3520b790e089d7 Mon Sep 17 00:00:00 2001 From: maor226 Date: Wed, 6 Apr 2022 12:13:13 +0300 Subject: [PATCH] adding the fuctuality for remove the token if it get out of the group --- Tests/group_test.flow | 23 +++++++++++++++++++---- Tests/group_test.png | Bin 10156 -> 11167 bytes flow.py | 22 +++++++++++++--------- 3 files changed, 32 insertions(+), 13 deletions(-) diff --git a/Tests/group_test.flow b/Tests/group_test.flow index dfd733c..35c1711 100644 --- a/Tests/group_test.flow +++ b/Tests/group_test.flow @@ -1,7 +1,7 @@ blockdiag { st -> req1 -> req2; - st -> wt2; - wt1 -> req3; + st -> wt1 -> req3; + bl3; st [type=start]; req1 [type=sync, req="['1']"]; @@ -9,14 +9,29 @@ blockdiag { req3 [type=sync, req="['3']"]; wt1 [type=sync, wait="['1']"]; - wt2 [type=sync, wait="['2']"]; + bl3 [type=sync, block="['3']"]; group { req1; req2; - wt2; wt1; + bl3 } + ###################################################################################### + + # For debugging + class hidden [color = none, style = none, textcolor = white]; + stt -> listener -> logger -> listener [style = "none"]; + + listener [type=sync, + wait="lambda e: True", + class = "hidden", autoformat='false']; + + logger [type=logger, label="Events log", autoformat='false', width=200] + stt [type=start, class = "hidden", autoformat='false']; + + + } diff --git a/Tests/group_test.png b/Tests/group_test.png index 4a334383d53334a9edadc9f17ae97f463194aea4..bda8f410efff986f007b637c10de3601a89d0c62 100644 GIT binary patch literal 11167 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 A0ssI2 literal 10156 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 z