fix PRDFlow (doc)

This commit is contained in:
NicolasCantu 2024-03-21 11:53:54 +01:00
parent 81fb45394a
commit 21cff729a4
4 changed files with 80 additions and 144 deletions

View File

@ -18,7 +18,7 @@
* 8.2. [Fonctionnalités optionnelles](#Fonctionnalitsoptionnelles) * 8.2. [Fonctionnalités optionnelles](#Fonctionnalitsoptionnelles)
* 8.3. [Création et envoi](#Crationetenvoi-1) * 8.3. [Création et envoi](#Crationetenvoi-1)
* 8.4. [Réception](#Rception-1) * 8.4. [Réception](#Rception-1)
* 9. [RequestPrdList - Demande de Listes ( RequestPcd)](#RequestPrdList-DemandedeListesRequestPcd) * 9. [RequestPrdList - Demande de Listes ](#RequestPrdList-DemandedeListesRequestPcd)
* 9.1. [Schéma des flux](#Schmadesflux-1) * 9.1. [Schéma des flux](#Schmadesflux-1)
* 9.2. [Création : Datas spécifiques](#Cration:Datasspcifiques) * 9.2. [Création : Datas spécifiques](#Cration:Datasspcifiques)
* 9.3. [Réception : Datas spécifiques](#Rception:Datasspcifiques) * 9.3. [Réception : Datas spécifiques](#Rception:Datasspcifiques)
@ -64,7 +64,7 @@ Voir [_Doc_references.md](_Doc_references.md).
* `RequestPrdMessage`: Envoi de messages publics, confidentiels ou privés et/ou de transactions Silent Payments des autres `RequestPrd` à diffuser sur le réseau des nœuds de la side chain. Les `RequestPrdMessage` peuvent répondre les uns aux autres. * `RequestPrdMessage`: Envoi de messages publics, confidentiels ou privés et/ou de transactions Silent Payments des autres `RequestPrd` à diffuser sur le réseau des nœuds de la side chain. Les `RequestPrdMessage` peuvent répondre les uns aux autres.
* `RequestPrdUpdate`: Demande de mise à jour d'une liste d'`Item` (publiée via un `RequestPCD`), qui sera déchiffrée et validée ou non par des `RequestPrdResponse` en retour. * `RequestPrdUpdate`: Demande de mise à jour d'une liste d'`Item` (publiée via un `RequestPCD`), qui sera déchiffrée et validée ou non par des `RequestPrdResponse` en retour.
* `RequestPrdConfirm`: Confirmation de la réception des `RequestPrd` (à l'exception de `RequestPrdConfirm` eux-même). * `RequestPrdConfirm`: Confirmation de la réception des `RequestPrd` (à l'exception de `RequestPrdConfirm` eux-même).
* `RequestPrdResponse`: Réponse aux autres types de `RequestPrd` (à l'exception de `RequestPrdConfirm`, `RequestPrdResponse` et `RequestPrdMessage`). * `RequestPrdResponse`: Réponse aux autres types de `RequestPrd` (à l'exception de `RequestPrdConfirm`, et `RequestPrdMessage`).
* **Message**: Enveloppe commune pour les `RequestPrd` et `RequestPcd` lors de leur transmission aux relais et de leur réception depuis les relais. Dans cette enveloppe les `RequestPrd` et `RequestPcd` sont chiffrés par la `ProcessKey` de l'`ItemProcess` (cf. [Specs-Definition](SpecsDefinition.md)) et ajoutés au champs `RequestEnc`. * **Message**: Enveloppe commune pour les `RequestPrd` et `RequestPcd` lors de leur transmission aux relais et de leur réception depuis les relais. Dans cette enveloppe les `RequestPrd` et `RequestPcd` sont chiffrés par la `ProcessKey` de l'`ItemProcess` (cf. [Specs-Definition](SpecsDefinition.md)) et ajoutés au champs `RequestEnc`.
@ -90,7 +90,7 @@ Les `RequestPrd` sont des demandes d'actions ou des réponses à ces demandes, i
* Envoi de message, pouvant initier un échange de messagerie ou répondre à un autre `RequestPrdMessage`. * Envoi de message, pouvant initier un échange de messagerie ou répondre à un autre `RequestPrdMessage`.
* `RequestPrdUpdate` : Souvent la première requête d'un workflow, un `RequestPrdUpdate` ne répond pas à un autre `RequestPrd`. * `RequestPrdUpdate` : Souvent la première requête d'un workflow, un `RequestPrdUpdate` ne répond pas à un autre `RequestPrd`.
* `RequestPrdConfirm` : Répond à tous les autres types de `RequestPrd` (à l'exception des `RequestPrdConfirm` eux-mêmes). * `RequestPrdConfirm` : Répond à tous les autres types de `RequestPrd` (à l'exception des `RequestPrdConfirm` eux-mêmes).
* `RequestPrdResponse` : Répond à tous les autres types de `RequestPrd` (à l'exception des `RequestPrdConfirm`, `RequestPrdMessage` et `RequestPrdResponse` eux-mêmes). Dans le cas d'une réponse à un `RequestPrdList` ou d'un `RequestPrdUpdate`, le `RequestPrdResponse` doit obligatoirement être accompagné d'un `RequestPcd`. * `RequestPrdResponse` : Répond à tous les autres types de `RequestPrd` (à l'exception des `RequestPrdConfirm`, `RequestPrdResponse` eux-mêmes). Dans le cas d'une réponse à un `RequestPrdList` ou d'un `RequestPrdUpdate`, le `RequestPrdResponse` doit obligatoirement être accompagné d'un `RequestPcd`.
Selon le type de `RequestPrd`, les demandes peuvent s'adresser à tous les membres de l'`ItemProcess`, aux gestionnaires du type d'`Item` concerné ou simplement à l'émetteur, selon : Selon le type de `RequestPrd`, les demandes peuvent s'adresser à tous les membres de l'`ItemProcess`, aux gestionnaires du type d'`Item` concerné ou simplement à l'émetteur, selon :
@ -128,7 +128,7 @@ Ce qui est résumé pour l'envoi :
Les traitements pour la réception des `RequestPrd` varient selon leur type, principalement autour des aspects suivants : Les traitements pour la réception des `RequestPrd` varient selon leur type, principalement autour des aspects suivants :
* **Notification user** : Nécessité de notifier l'utilisateur courant, ou non. * **Notification user** : Nécessité de notifier l'utilisateur courant, ou non.
* **`RequestPrdConfirm` to send**: Envoi d'une confirmaiton, ou non * **`RequestPrdConfirm` to send**: Envoi d'une confirmation, ou non
* **`RequestPrdResponse` to send**: Envoi d'un `RequestPrdResponse` ou non. * **`RequestPrdResponse` to send**: Envoi d'un `RequestPrdResponse` ou non.
* **`RequestPrdResponse` reply waiting**: Attente d'un `RequestPrdResponse` en retour ou non. * **`RequestPrdResponse` reply waiting**: Attente d'un `RequestPrdResponse` en retour ou non.
* **`RequestPrdConfirm` reply waiting (from `RequestPrdResponse` send )**: Attente d'un `RequestPrdConfirm` en retour ou non. * **`RequestPrdConfirm` reply waiting (from `RequestPrdResponse` send )**: Attente d'un `RequestPrdConfirm` en retour ou non.
@ -138,10 +138,10 @@ Ce qui est résumé Pour la réception :
| `request_type` | Notification user | `RequestPrdConfirm` to send | `RequestPcd` to send | `RequestPrdResponse` to send | `RequestPrdResponse` reply waiting | `RequestPrdConfirm` reply waiting (from `RequestPrdResponse` send ) | | `request_type` | Notification user | `RequestPrdConfirm` to send | `RequestPcd` to send | `RequestPrdResponse` to send | `RequestPrdResponse` reply waiting | `RequestPrdConfirm` reply waiting (from `RequestPrdResponse` send ) |
|----------------------|-----------------------------------|------------------------------|----------------------|-----------------------------------------------------------------|------------------------------------|---------------------------------------------------------------------| |----------------------|-----------------------------------|------------------------------|----------------------|-----------------------------------------------------------------|------------------------------------|---------------------------------------------------------------------|
| `RequestPrdList` | No | Yes | Yes | all the members of the `item_name` `Role` into to `ItemProcess` | No | Yes | | `RequestPrdList` | No | Yes | Yes | all the members of the `item_name` `Role` into to `ItemProcess` | No | Yes |
| `RequestPrdUpdate` | Info | Yes | No | all the members of all `Role` into to `ItemProcess` | Yes (other members) | Yes | | `RequestPrdUpdate` | RequestPrd | Yes | No | all the members of all `Role` into to `ItemProcess` | Yes (other members) | Yes |
| `RequestPrdMessage` | Waiting `RequestPrdMessage` reply | if no `raw_transaction_list` | No | No | No | No | | `RequestPrdMessage` | Waiting `RequestPrdMessage` reply | if no `raw_transaction_list` | No | No | No | No |
| `RequestPrdResponse` | Info | Yes | No | No | No | No | | `RequestPrdResponse` | RequestPrd | Yes | No | No | No | No |
| `RequestPrdConfirm` | Info | No | No | No | No | No | | `RequestPrdConfirm` | RequestPrd | No | No | No | No | No |
## 6. <a name='Encryption'></a>Encryption ## 6. <a name='Encryption'></a>Encryption
@ -171,34 +171,6 @@ Principaux champs des `Request` contenus dans les `RequestPcd` et `RequestPrd` c
* **`request_prd_origin_hash`** : Hash du `RequestPrd` à l'origine du `RequestPrd`. * **`request_prd_origin_hash`** : Hash du `RequestPrd` à l'origine du `RequestPrd`.
* **`item_reference_hash`** : Hash de l'`Item` auquel le `RequestPcd` fait référence. * **`item_reference_hash`** : Hash de l'`Item` auquel le `RequestPcd` fait référence.
### 6.1. <a name='Crationetenvoi'></a>Création et envoi
Les `RequestPcd` et les `RequestPrd` sont envoyés sous forme de messages (`JSON`) via les `websockets` des relais.
Ces `Message` contiennent soit des `RequestPrd`, soit des `RequestPcd`, encapsulés dans l'attribut `request_enc`, lequel est chiffré à l'aide de la clé `ProcessKey` de l'`ItemProcess` concerné.
Les `RequestPrd` et `RequestPcd` sont au format JSON. Voir [Specs-Datamodel.md](Specs-Datamodel.md).
**Création du message et envoi**: voir [Message-SP-Specs.md](Message-SP-Specs.md).
### 6.2. <a name='Rception'></a>Réception
Les `RequestPcd` et `RequestPrd` sont reçus sous forme de messages (`JSON`) via les `websockets` des relais.
Ces messages contiennent des `RequestPrd` ou des `RequestPcd` encapsulés dans l'attribut `request_enc`, lequel est chiffré avec la clé `ProcessKey` de l'`ItemProcess` concerné.
À la réception des `Message`, ceux-ci sont déchiffrés puis conservés ou non, selon le `process_hash` du `RequestPcd` ou du `RequestPrd` (dans l'attribut `request`). Si le `process_hash` n'est pas reconnu, le message est ignoré.
Les types `RequestPrd` et `RequestPcd` sont distingués par l'attribut `request_type` dans le `Message`.
En cas de `RequestPcd` ou `RequestPrd` liés via `RequestPcd_reference_hash`, `request_prd_reference_hash`, `RequestPcd_origin_hash`, `request_prd_origin_hash` ou `item_reference_hash` (dans des `RequestPcd`), il est nécessaire d'avoir reçu ou d'attendre ces documents pour traiter le message.
Les `RequestPrd` et `RequestPcd` sont au format JSON. Voir [Specs-Datamodel.md](Specs-Datamodel.md).
**Réception du message**: voir [Message-SP-Specs.md](Message-SP-Specs.md).
Pour les `RequestPcd` et `RequestPrd`, il est nécessaire de vérifier si le hash du document est déjà enregistré ; si tel est le cas, le message est ignoré.
## 7. <a name='FonctiondesRequestPcd'></a>Fonction des RequestPcd ## 7. <a name='FonctiondesRequestPcd'></a>Fonction des RequestPcd
Les Portable Contract Documents (`RequestPcd`) sont des documents au format `JSON` encapsulant des listes versionnées d'`Item`, dont les attributs sont chiffsrés selon trois niveaux de confidentialité : public, par rôles spécifiques, ou privé. (cf. [Specs-Security.md](Specs-Security.md)). Les Portable Contract Documents (`RequestPcd`) sont des documents au format `JSON` encapsulant des listes versionnées d'`Item`, dont les attributs sont chiffsrés selon trois niveaux de confidentialité : public, par rôles spécifiques, ou privé. (cf. [Specs-Security.md](Specs-Security.md)).
@ -208,7 +180,7 @@ Les `Item` échangés via les `RequestPcd` sont soumis à une vérification par
Principaux champs des `RequestPcd` : Principaux champs des `RequestPcd` :
* **`request`** : cf la descripton de la structure `Request`. * **`request`** : cf la descripton de la structure `Request`.
* **`item_enc_list`** : Les `Item` chiffrés par une clé symétrique générée à la volée pour chaque champ et pour chaque item d'une liste. * **`item_enc_list`** : Les `Item` chiffrés sous forme `RequestPcdItemGenericEnc` par une clé symétrique générée à la volée pour chaque champ et pour chaque item d'une liste.
* **`pagination`** : La pagination de la liste des `Item`. * **`pagination`** : La pagination de la liste des `Item`.
Principaux champs de la structure `Pagination` : Principaux champs de la structure `Pagination` :
@ -260,18 +232,15 @@ La création d'un `RequestPcd` suit plusieurs étapes :
2. Ajouts et modifications éventuelles des `Item`. 2. Ajouts et modifications éventuelles des `Item`.
3. Chiffrement des attributs de chaque `Item` selon les règles de confidentialité et de partage des clés (cf. [Specs-Security.md](Specs-Security.md)). 3. Chiffrement des attributs de chaque `Item` selon les règles de confidentialité et de partage des clés (cf. [Specs-Security.md](Specs-Security.md)).
4. Chiffrement du `RequestPcd` avec la clé `ProcessKey` du `ItemProcess` concerné. 4. Chiffrement du `RequestPcd` avec la clé `ProcessKey` du `ItemProcess` concerné.
5. Traitements communs aux `RequestPcd` et `RequestPrd`.
### 7.3. <a name='Rception-1'></a>Réception ### 7.3. <a name='Rception-1'></a>Réception
La réception d'un `RequestPcd` suit plusieurs étapes : La réception d'un `RequestPcd` suit plusieurs étapes :
1. Traitements communs aux `RequestPcd` et `RequestPrd`.
2. Recherche des `RequestPrd` en relation via `RequestPcd_reference_hash` et `RequestPcd_origin_hash` de ces `RequestPrd`, et attente si nécessaire. 2. Recherche des `RequestPrd` en relation via `RequestPcd_reference_hash` et `RequestPcd_origin_hash` de ces `RequestPrd`, et attente si nécessaire.
3. Déchiffrage des attributs publics des `Item` des `RequestPcd` avec la `ProcessKey` du `ItemProcess` concerné. 3. Déchiffrage des attributs publics des `Item` des `RequestPcd` avec la `ProcessKey` du `ItemProcess` concerné.
4. Déchiffrage des attributs confidentiels des `Item` des `RequestPcd` avec les clés de déchiffrement fournies par l'attribut `RequestPcd_keys_role_confidential_list_enc_by_shared_secret` des `RequestPrd`. 4. Déchiffrage des attributs confidentiels des `Item` des `RequestPcd` avec les clés de déchiffrement fournies par l'attribut `RequestPcd_keys_role_confidential_list_enc_by_shared_secret` des `RequestPrd`.
5. Déchiffrage des attributs privés des `Item` des `RequestPcd` avec la clé privée `KeyRecover`. 5. Déchiffrage des attributs privés des `Item` des `RequestPcd` avec la clé privée `KeyRecover`.
6. Mise à jour du cache pour le traitement des `RequestPrd`.
## 8. <a name='FonctiondesRequestPrd'></a>Fonction des`RequestPrd` ## 8. <a name='FonctiondesRequestPrd'></a>Fonction des`RequestPrd`
@ -281,7 +250,7 @@ Les clés permettant le chiffrement des attributs confidentiels par rôles des `
Les `RequestPrd` se déclinent en plusieurs types, tels que `RequestPrdList`, `RequestPrdMessage`, `RequestPrdUpdate`, etc., correspondant à différentes actions comme l'envoi de messages, la mise à jour des informations contractuelles, ou la confirmation de transactions. Les `RequestPrd` se déclinent en plusieurs types, tels que `RequestPrdList`, `RequestPrdMessage`, `RequestPrdUpdate`, etc., correspondant à différentes actions comme l'envoi de messages, la mise à jour des informations contractuelles, ou la confirmation de transactions.
Principaux champs des `RequestPcd` : Principaux champs des `RequestPrd` :
* **`request`** : cf la descripton de la structure `Request`. * **`request`** : cf la descripton de la structure `Request`.
* **`sig_value`** : Valeur de la signature (parmi les valeurs valant pour `OK`, `KO` ou `none` telles que définies dans l'`ItemProcess`). * **`sig_value`** : Valeur de la signature (parmi les valeurs valant pour `OK`, `KO` ou `none` telles que définies dans l'`ItemProcess`).
@ -315,65 +284,32 @@ Pour simplifier, les `RequestPrdConfirm` n'ont pas été inclus dans le schéma.
![RequestPrd](diagrams/PRD.png "RequestPrd") ![RequestPrd](diagrams/PRD.png "RequestPrd")
### 8.2. <a name='Fonctionnalitsoptionnelles'></a>Fonctionnalités optionnelles
L'attribut `sig_value` permet d'attribuer une valeur aux signatures. Les valeurs des signatures sont définies par rôles dans les `ItemProcess`, avec des valeurs pouvant être `OK`, `KO` ou `none` pour les validations des `RequestPrd`.
Lorsque la réponse fait référence à un `RequestPcd`, cela est précisé dans `RequestPcd_reference_hash`; de même pour les `RequestPrd` avec `request_prd_reference_hash`.
Lorsque la réponse fait suite directement à un `RequestPcd`, cela est indiqué dans `RequestPcd_origin_hash`; idem pour les `RequestPrd` avec `request_prd_origin_hash`.
Les `RequestPrdResponse` signalent de façon confidentielle :
* soit des conditions ad hoc déjà remplies via les attributs `payment_method_enc_by_shared_secret`, `deposit_method_enc_by_shared_secret`, `commitment_method_enc_by_shared_secret`, `commitment_request_pcd_hash_list` pour les paiements et les preuves ad hoc éventuellement associées aux `RequestPcd` de la nouvelle version.
* soit des appels à recevoir les moyens de satisfaire ces conditions via les attributs `ask_payment_method_enc_by_shared_secret`, `ask_deposit_method_enc_by_shared_secret`, `ask_commitment_method_enc_by_shared_secret`.
Les `Item` associés sont référencés dans des `RequestPcd` identifiés par `payment_request_pcd_hash_list_enc_by_shared_secret`, `cap_request_pcd_hash_list_enc_by_shared_secret` (dans le cas de paiements temporaires en attente du passage d'un cap), `deposit_request_pcd_hash_list_enc_by_shared_secret` et `commitment_request_pcd_hash_list_enc_by_shared_secret`.
Des champs de messages peuvent accompagner les `RequestPrd` via `message_public`, `message_confidential`, `message_private`.
Il est également possible de partager des clés de chiffrement ad hoc via `certif_key_enc_by_shared_secret`.
En plus des horodatages automatiques, il est possible de déclarer un timestamp dans `timestamp_declared`, qui ne sera pas pris en compte dans le traitement mais sera ainsi tracé dans les éléments de preuve.
Les adresses et les rôles sont précisés en cas d'utilisateurs ayant plusieurs rôles dans les `ItemProcess` et pour préciser les adresses de réponse en cas d'utilisation sur plusieurs dispositifs.
Tous les échanges sont complétés par l'empreinte du dispositif de l'émetteur, envoyée de façon confidentielle via `device_footprint_enc_by_shared_secret`.
### 8.3. <a name='Crationetenvoi-1'></a>Création et envoi ### 8.3. <a name='Crationetenvoi-1'></a>Création et envoi
La création d'un `RequestPrd` suit plusieurs étapes : La création d'un `RequestPrd` suit plusieurs étapes :
1. Récupération des clés de chiffrement confidentiel des attributs des items d'un `RequestPcd`. 1. Récupération des clés de chiffrement confidentiel des attributs des items d'un `RequestPcd`.
2. Chiffrement du `RequestPrd` avec la clé `ProcessKey` du `ItemProcess` concerné. 2. Création d'une `adresse SP` pour le partage de la `KeyConfidential` et pour l'horodatage du hash du `RequestPrd` dans un output de la transaction
3. Création d'une `adresse SP` pour le partage de la `KeyConfidential` et pour l'horodatage du hash du `RequestPrd` dans la side chain. 3. Chiffrement des clés confidentielles avec la `KeyConfidential`.
4. Création du `message` contenant le `RequestPrd` chiffré, la preuve de travail, et l'adresse du faucet. 4. Créer `RequestPrdMessage` pour la publication de la `transaction SP`
5. Sélection de 4 relais pour le message selon l'historique des pings et des réponses obtenues.
6. Sélection de 4 noeuds de signet pour l'envoi de la `transaction SP`.
7. Chiffrement des données confidentielles du `RequestPrd` avec la `KeyConfidential` de la `transaction SP`.
8. Envoi du message aux relais.
9. Envoi de la transaction aux noeuds de signet à travers un `RequestPrdMessage` pour la publication de la `transaction SP` avec le hash du `RequestPrd` dans l'attribut `request_prd_reference_hash`.
10. Mise à jour du cache avec les nouveaux `RequestPrd` envoyés (sans mise en cache du `RequestPrdMessage`).
Voir [Silent-Payment-Specs.md](Silent-Payment-Specs.md). Voir [Silent-Payment-Specs.md](Silent-Payment-Specs.md).
### 8.4. <a name='Rception-1'></a>Réception ### 8.4. <a name='Rception-1'></a>Réception
La réception d'un `RequestPcd` suit plusieurs étapes : La réception d'un `RequestPrd` suit plusieurs étapes :
1. Traitements communs aux `RequestPcd` et `RequestPrd`. 1. Recherche des `RequestPcd` en relation via `RequestPcd_reference_hash` et `RequestPcd_origin_hash`, attente si nécessaire et traitement de ceux-ci.
2. Recherche des `RequestPcd` en relation via `RequestPcd_reference_hash` et `RequestPcd_origin_hash`, attente si nécessaire et traitement de ceux-ci. 2. Vérification de la conformité des `RequestPcd` en relation.
3. Vérification de la conformité des `RequestPcd` en relation. 3. Recherche des `RequestPrd` en relation via `request_prd_reference_hash` et `request_prd_origin_hash`, attente si nécessaire et traitement de ceux-ci.
4. Recherche des `RequestPrd` en relation via `request_prd_reference_hash` et `request_prd_origin_hash`, attente si nécessaire et traitement de ceux-ci. 4. Vérification de la conformité des `RequestPrd` en relation.
5. Vérification de la conformité des `RequestPrd` en relation. 5. Recherche de l'`Item` associé via `item_reference_hash`, attente si nécessaire et traitement de celui-ci.
6. Recherche de l'`Item` associé via `item_reference_hash`, attente si nécessaire et traitement de celui-ci. 6. Déchiffrage des attributs confidentiels notés `<attribut>_enc_by_shared_secret` depuis la `KeyConfidential`
7. Déchiffrage des attributs confidentiels notés `<attribut>_enc_by_shared_secret` depuis la `KeyConfidential` de la `transaction SP` correspondante via le hash du `RequestPrd` dans l'output `2` de la transaction. 7. Déchiffrage les champs confididentiels depuis la `KeyConfidential`
8. Mise à jour du cache pour le traitement des `RequestPrd`. 8. Validation des conditions définies dans le `ItemProcess` pour cet `Item`, avec le `Role` correspondant dans le `ItemProcess`, et dans ces rôles, les conditions pour ce type de `RequestPrd` (dans l'attribut `request_prd_type`)
9. Consultation du `RequestPrdConfirm` pour création et envoi. 9. Traitements spécifiques au type de `RequestPrd`.
10. Validation des conditions définies dans le `ItemProcess` pour cet `Item`, avec le `Role` correspondant dans le `ItemProcess`, et dans ces rôles, les conditions pour ce type de `RequestPrd` (dans l'attribut `request_prd_type`) telles que définies dans [Specs-Process-Roles-Specs.md](Specs-Process-Roles-Specs.md).
11. Traitements spécifiques au type de `RequestPrd`.
## 9. <a name='RequestPrdList-DemandedeListesRequestPcd'></a>RequestPrdList - Demande de Listes ( RequestPcd) ## 9. <a name='RequestPrdList-DemandedeListesRequestPcd'></a>RequestPrdList - Demande de Listes
Utile pour les utilisateurs souhaitant consulter ou explorer des listes de contrats, de membres, ou d'autres items dans le réseau. Chaque `RequestPcd` liste des `Item` d'un même type, tels que les `ItemProcess`, les `ItemMember`, les `ItemPeer`, les `ItemPayment`, etc. Utile pour les utilisateurs souhaitant consulter ou explorer des listes de contrats, de membres, ou d'autres items dans le réseau. Chaque `RequestPcd` liste des `Item` d'un même type, tels que les `ItemProcess`, les `ItemMember`, les `ItemPeer`, les `ItemPayment`, etc.

View File

@ -1,9 +1,48 @@
<mxfile host="Electron" modified="2024-03-20T16:29:45.989Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/24.0.4 Chrome/120.0.6099.109 Electron/28.1.0 Safari/537.36" etag="XFeOrrn0K27n1AZZabWl" version="24.0.4" type="device"> <mxfile host="Electron" modified="2024-03-20T16:30:03.222Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/24.0.4 Chrome/120.0.6099.109 Electron/28.1.0 Safari/537.36" etag="U1sIeVLENQ47mf9KFPoB" version="24.0.4" type="device">
<diagram id="C5RBs43oDa-KdzZeNtuy" name="Page-1"> <diagram id="C5RBs43oDa-KdzZeNtuy" name="Page-1">
<mxGraphModel dx="1434" dy="838" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0"> <mxGraphModel dx="1434" dy="838" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root> <root>
<mxCell id="WIyWlLk6GJQsqaUBKTNV-0" /> <mxCell id="WIyWlLk6GJQsqaUBKTNV-0" />
<mxCell id="WIyWlLk6GJQsqaUBKTNV-1" parent="WIyWlLk6GJQsqaUBKTNV-0" /> <mxCell id="WIyWlLk6GJQsqaUBKTNV-1" parent="WIyWlLk6GJQsqaUBKTNV-0" />
<mxCell id="n8NZEWj3z1Uz_2AXR3Mj-15" value="" style="group" vertex="1" connectable="0" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="320" y="190" width="120" height="940" as="geometry" />
</mxCell>
<mxCell id="n8NZEWj3z1Uz_2AXR3Mj-13" value="" style="endArrow=none;html=1;rounded=0;strokeWidth=3;strokeColor=#C2C2C2;" edge="1" parent="n8NZEWj3z1Uz_2AXR3Mj-15">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="62" y="940" as="sourcePoint" />
<mxPoint x="62" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="n8NZEWj3z1Uz_2AXR3Mj-0" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#ABABAB;" vertex="1" parent="n8NZEWj3z1Uz_2AXR3Mj-15">
<mxGeometry y="50" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="n8NZEWj3z1Uz_2AXR3Mj-1" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#ABABAB;" vertex="1" parent="n8NZEWj3z1Uz_2AXR3Mj-15">
<mxGeometry y="140" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="n8NZEWj3z1Uz_2AXR3Mj-2" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#ABABAB;" vertex="1" parent="n8NZEWj3z1Uz_2AXR3Mj-15">
<mxGeometry y="230" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="n8NZEWj3z1Uz_2AXR3Mj-3" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#ABABAB;" vertex="1" parent="n8NZEWj3z1Uz_2AXR3Mj-15">
<mxGeometry y="320" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="n8NZEWj3z1Uz_2AXR3Mj-4" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#ABABAB;" vertex="1" parent="n8NZEWj3z1Uz_2AXR3Mj-15">
<mxGeometry y="410" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="n8NZEWj3z1Uz_2AXR3Mj-5" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#ABABAB;" vertex="1" parent="n8NZEWj3z1Uz_2AXR3Mj-15">
<mxGeometry y="500" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="n8NZEWj3z1Uz_2AXR3Mj-6" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#ABABAB;" vertex="1" parent="n8NZEWj3z1Uz_2AXR3Mj-15">
<mxGeometry y="590" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="n8NZEWj3z1Uz_2AXR3Mj-7" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#ABABAB;" vertex="1" parent="n8NZEWj3z1Uz_2AXR3Mj-15">
<mxGeometry y="680" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="n8NZEWj3z1Uz_2AXR3Mj-8" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#ABABAB;" vertex="1" parent="n8NZEWj3z1Uz_2AXR3Mj-15">
<mxGeometry y="766" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="n8NZEWj3z1Uz_2AXR3Mj-9" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#ABABAB;" vertex="1" parent="n8NZEWj3z1Uz_2AXR3Mj-15">
<mxGeometry y="856" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="jpdV1vV9o7sr3iGcI0SG-34" value="" style="edgeStyle=orthogonalEdgeStyle;html=1;verticalAlign=bottom;endArrow=open;endSize=8;strokeColor=#ff0000;rounded=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="jpdV1vV9o7sr3iGcI0SG-18" edge="1"> <mxCell id="jpdV1vV9o7sr3iGcI0SG-34" value="" style="edgeStyle=orthogonalEdgeStyle;html=1;verticalAlign=bottom;endArrow=open;endSize=8;strokeColor=#ff0000;rounded=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="jpdV1vV9o7sr3iGcI0SG-18" edge="1">
<mxGeometry relative="1" as="geometry"> <mxGeometry relative="1" as="geometry">
<mxPoint x="150" y="1020" as="targetPoint" /> <mxPoint x="150" y="1020" as="targetPoint" />
@ -239,45 +278,6 @@
<mxCell id="jpdV1vV9o7sr3iGcI0SG-77" value="PRDConfirm&lt;br&gt;TX_Sp" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1"> <mxCell id="jpdV1vV9o7sr3iGcI0SG-77" value="PRDConfirm&lt;br&gt;TX_Sp" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="91" y="793.0043243243243" width="120" height="40.54054054054054" as="geometry" /> <mxGeometry x="91" y="793.0043243243243" width="120" height="40.54054054054054" as="geometry" />
</mxCell> </mxCell>
<mxCell id="n8NZEWj3z1Uz_2AXR3Mj-15" value="" style="group" vertex="1" connectable="0" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="810" y="180" width="120" height="940" as="geometry" />
</mxCell>
<mxCell id="n8NZEWj3z1Uz_2AXR3Mj-13" value="" style="endArrow=none;html=1;rounded=0;strokeWidth=3;strokeColor=#C2C2C2;" edge="1" parent="n8NZEWj3z1Uz_2AXR3Mj-15">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="62" y="940" as="sourcePoint" />
<mxPoint x="62" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="n8NZEWj3z1Uz_2AXR3Mj-0" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#ABABAB;" vertex="1" parent="n8NZEWj3z1Uz_2AXR3Mj-15">
<mxGeometry y="50" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="n8NZEWj3z1Uz_2AXR3Mj-1" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#ABABAB;" vertex="1" parent="n8NZEWj3z1Uz_2AXR3Mj-15">
<mxGeometry y="140" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="n8NZEWj3z1Uz_2AXR3Mj-2" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#ABABAB;" vertex="1" parent="n8NZEWj3z1Uz_2AXR3Mj-15">
<mxGeometry y="230" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="n8NZEWj3z1Uz_2AXR3Mj-3" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#ABABAB;" vertex="1" parent="n8NZEWj3z1Uz_2AXR3Mj-15">
<mxGeometry y="320" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="n8NZEWj3z1Uz_2AXR3Mj-4" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#ABABAB;" vertex="1" parent="n8NZEWj3z1Uz_2AXR3Mj-15">
<mxGeometry y="410" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="n8NZEWj3z1Uz_2AXR3Mj-5" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#ABABAB;" vertex="1" parent="n8NZEWj3z1Uz_2AXR3Mj-15">
<mxGeometry y="500" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="n8NZEWj3z1Uz_2AXR3Mj-6" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#ABABAB;" vertex="1" parent="n8NZEWj3z1Uz_2AXR3Mj-15">
<mxGeometry y="590" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="n8NZEWj3z1Uz_2AXR3Mj-7" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#ABABAB;" vertex="1" parent="n8NZEWj3z1Uz_2AXR3Mj-15">
<mxGeometry y="680" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="n8NZEWj3z1Uz_2AXR3Mj-8" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#ABABAB;" vertex="1" parent="n8NZEWj3z1Uz_2AXR3Mj-15">
<mxGeometry y="766" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="n8NZEWj3z1Uz_2AXR3Mj-9" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#ABABAB;" vertex="1" parent="n8NZEWj3z1Uz_2AXR3Mj-15">
<mxGeometry y="856" width="120" height="60" as="geometry" />
</mxCell>
</root> </root>
</mxGraphModel> </mxGraphModel>
</diagram> </diagram>

View File

@ -1,46 +1,46 @@
<mxfile host="Electron" modified="2024-03-20T16:30:03.222Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/24.0.4 Chrome/120.0.6099.109 Electron/28.1.0 Safari/537.36" etag="U1sIeVLENQ47mf9KFPoB" version="24.0.4" type="device"> <mxfile host="Electron" modified="2024-03-21T10:53:28.601Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/24.0.4 Chrome/120.0.6099.109 Electron/28.1.0 Safari/537.36" etag="AVC7KL9Yah0ulxh9qXZf" version="24.0.4" type="device">
<diagram id="C5RBs43oDa-KdzZeNtuy" name="Page-1"> <diagram id="C5RBs43oDa-KdzZeNtuy" name="Page-1">
<mxGraphModel dx="1434" dy="838" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0"> <mxGraphModel dx="954" dy="576" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root> <root>
<mxCell id="WIyWlLk6GJQsqaUBKTNV-0" /> <mxCell id="WIyWlLk6GJQsqaUBKTNV-0" />
<mxCell id="WIyWlLk6GJQsqaUBKTNV-1" parent="WIyWlLk6GJQsqaUBKTNV-0" /> <mxCell id="WIyWlLk6GJQsqaUBKTNV-1" parent="WIyWlLk6GJQsqaUBKTNV-0" />
<mxCell id="n8NZEWj3z1Uz_2AXR3Mj-15" value="" style="group" vertex="1" connectable="0" parent="WIyWlLk6GJQsqaUBKTNV-1"> <mxCell id="n8NZEWj3z1Uz_2AXR3Mj-15" value="" style="group" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1" connectable="0">
<mxGeometry x="320" y="190" width="120" height="940" as="geometry" /> <mxGeometry x="320" y="190" width="120" height="940" as="geometry" />
</mxCell> </mxCell>
<mxCell id="n8NZEWj3z1Uz_2AXR3Mj-13" value="" style="endArrow=none;html=1;rounded=0;strokeWidth=3;strokeColor=#C2C2C2;" edge="1" parent="n8NZEWj3z1Uz_2AXR3Mj-15"> <mxCell id="n8NZEWj3z1Uz_2AXR3Mj-13" value="" style="endArrow=none;html=1;rounded=0;strokeWidth=3;strokeColor=#C2C2C2;" parent="n8NZEWj3z1Uz_2AXR3Mj-15" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry"> <mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="62" y="940" as="sourcePoint" /> <mxPoint x="62" y="940" as="sourcePoint" />
<mxPoint x="62" as="targetPoint" /> <mxPoint x="62" as="targetPoint" />
</mxGeometry> </mxGeometry>
</mxCell> </mxCell>
<mxCell id="n8NZEWj3z1Uz_2AXR3Mj-0" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#ABABAB;" vertex="1" parent="n8NZEWj3z1Uz_2AXR3Mj-15"> <mxCell id="n8NZEWj3z1Uz_2AXR3Mj-0" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#ABABAB;" parent="n8NZEWj3z1Uz_2AXR3Mj-15" vertex="1">
<mxGeometry y="50" width="120" height="60" as="geometry" /> <mxGeometry y="50" width="120" height="60" as="geometry" />
</mxCell> </mxCell>
<mxCell id="n8NZEWj3z1Uz_2AXR3Mj-1" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#ABABAB;" vertex="1" parent="n8NZEWj3z1Uz_2AXR3Mj-15"> <mxCell id="n8NZEWj3z1Uz_2AXR3Mj-1" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#ABABAB;" parent="n8NZEWj3z1Uz_2AXR3Mj-15" vertex="1">
<mxGeometry y="140" width="120" height="60" as="geometry" /> <mxGeometry y="140" width="120" height="60" as="geometry" />
</mxCell> </mxCell>
<mxCell id="n8NZEWj3z1Uz_2AXR3Mj-2" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#ABABAB;" vertex="1" parent="n8NZEWj3z1Uz_2AXR3Mj-15"> <mxCell id="n8NZEWj3z1Uz_2AXR3Mj-2" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#ABABAB;" parent="n8NZEWj3z1Uz_2AXR3Mj-15" vertex="1">
<mxGeometry y="230" width="120" height="60" as="geometry" /> <mxGeometry y="230" width="120" height="60" as="geometry" />
</mxCell> </mxCell>
<mxCell id="n8NZEWj3z1Uz_2AXR3Mj-3" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#ABABAB;" vertex="1" parent="n8NZEWj3z1Uz_2AXR3Mj-15"> <mxCell id="n8NZEWj3z1Uz_2AXR3Mj-3" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#ABABAB;" parent="n8NZEWj3z1Uz_2AXR3Mj-15" vertex="1">
<mxGeometry y="320" width="120" height="60" as="geometry" /> <mxGeometry y="320" width="120" height="60" as="geometry" />
</mxCell> </mxCell>
<mxCell id="n8NZEWj3z1Uz_2AXR3Mj-4" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#ABABAB;" vertex="1" parent="n8NZEWj3z1Uz_2AXR3Mj-15"> <mxCell id="n8NZEWj3z1Uz_2AXR3Mj-4" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#ABABAB;" parent="n8NZEWj3z1Uz_2AXR3Mj-15" vertex="1">
<mxGeometry y="410" width="120" height="60" as="geometry" /> <mxGeometry y="410" width="120" height="60" as="geometry" />
</mxCell> </mxCell>
<mxCell id="n8NZEWj3z1Uz_2AXR3Mj-5" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#ABABAB;" vertex="1" parent="n8NZEWj3z1Uz_2AXR3Mj-15"> <mxCell id="n8NZEWj3z1Uz_2AXR3Mj-5" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#ABABAB;" parent="n8NZEWj3z1Uz_2AXR3Mj-15" vertex="1">
<mxGeometry y="500" width="120" height="60" as="geometry" /> <mxGeometry y="500" width="120" height="60" as="geometry" />
</mxCell> </mxCell>
<mxCell id="n8NZEWj3z1Uz_2AXR3Mj-6" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#ABABAB;" vertex="1" parent="n8NZEWj3z1Uz_2AXR3Mj-15"> <mxCell id="n8NZEWj3z1Uz_2AXR3Mj-6" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#ABABAB;" parent="n8NZEWj3z1Uz_2AXR3Mj-15" vertex="1">
<mxGeometry y="590" width="120" height="60" as="geometry" /> <mxGeometry y="590" width="120" height="60" as="geometry" />
</mxCell> </mxCell>
<mxCell id="n8NZEWj3z1Uz_2AXR3Mj-7" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#ABABAB;" vertex="1" parent="n8NZEWj3z1Uz_2AXR3Mj-15"> <mxCell id="n8NZEWj3z1Uz_2AXR3Mj-7" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#ABABAB;" parent="n8NZEWj3z1Uz_2AXR3Mj-15" vertex="1">
<mxGeometry y="680" width="120" height="60" as="geometry" /> <mxGeometry y="680" width="120" height="60" as="geometry" />
</mxCell> </mxCell>
<mxCell id="n8NZEWj3z1Uz_2AXR3Mj-8" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#ABABAB;" vertex="1" parent="n8NZEWj3z1Uz_2AXR3Mj-15"> <mxCell id="n8NZEWj3z1Uz_2AXR3Mj-8" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#ABABAB;" parent="n8NZEWj3z1Uz_2AXR3Mj-15" vertex="1">
<mxGeometry y="766" width="120" height="60" as="geometry" /> <mxGeometry y="766" width="120" height="60" as="geometry" />
</mxCell> </mxCell>
<mxCell id="n8NZEWj3z1Uz_2AXR3Mj-9" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#ABABAB;" vertex="1" parent="n8NZEWj3z1Uz_2AXR3Mj-15"> <mxCell id="n8NZEWj3z1Uz_2AXR3Mj-9" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#ABABAB;" parent="n8NZEWj3z1Uz_2AXR3Mj-15" vertex="1">
<mxGeometry y="856" width="120" height="60" as="geometry" /> <mxGeometry y="856" width="120" height="60" as="geometry" />
</mxCell> </mxCell>
<mxCell id="jpdV1vV9o7sr3iGcI0SG-34" value="" style="edgeStyle=orthogonalEdgeStyle;html=1;verticalAlign=bottom;endArrow=open;endSize=8;strokeColor=#ff0000;rounded=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="jpdV1vV9o7sr3iGcI0SG-18" edge="1"> <mxCell id="jpdV1vV9o7sr3iGcI0SG-34" value="" style="edgeStyle=orthogonalEdgeStyle;html=1;verticalAlign=bottom;endArrow=open;endSize=8;strokeColor=#ff0000;rounded=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="jpdV1vV9o7sr3iGcI0SG-18" edge="1">
@ -76,10 +76,10 @@
<mxCell id="jpdV1vV9o7sr3iGcI0SG-4" value="&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;PRDList&lt;/span&gt;&lt;br&gt;PRDMessage" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1"> <mxCell id="jpdV1vV9o7sr3iGcI0SG-4" value="&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;PRDList&lt;/span&gt;&lt;br&gt;PRDMessage" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="530" y="430.0043243243244" width="120" height="40.54054054054054" as="geometry" /> <mxGeometry x="530" y="430.0043243243244" width="120" height="40.54054054054054" as="geometry" />
</mxCell> </mxCell>
<mxCell id="jpdV1vV9o7sr3iGcI0SG-31" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;startArrow=classic;startFill=1;endArrow=none;endFill=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="jpdV1vV9o7sr3iGcI0SG-7" target="jpdV1vV9o7sr3iGcI0SG-27" edge="1"> <mxCell id="jpdV1vV9o7sr3iGcI0SG-31" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;startArrow=none;startFill=0;endArrow=classic;endFill=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="jpdV1vV9o7sr3iGcI0SG-7" target="jpdV1vV9o7sr3iGcI0SG-27" edge="1">
<mxGeometry relative="1" as="geometry" /> <mxGeometry relative="1" as="geometry" />
</mxCell> </mxCell>
<mxCell id="jpdV1vV9o7sr3iGcI0SG-7" value="PCD" style="rounded=0;whiteSpace=wrap;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1"> <mxCell id="jpdV1vV9o7sr3iGcI0SG-7" value="PCD" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="530" y="639.9986486486487" width="120" height="40.54054054054054" as="geometry" /> <mxGeometry x="530" y="639.9986486486487" width="120" height="40.54054054054054" as="geometry" />
</mxCell> </mxCell>
<mxCell id="jpdV1vV9o7sr3iGcI0SG-32" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="jpdV1vV9o7sr3iGcI0SG-8" target="jpdV1vV9o7sr3iGcI0SG-30" edge="1"> <mxCell id="jpdV1vV9o7sr3iGcI0SG-32" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="jpdV1vV9o7sr3iGcI0SG-8" target="jpdV1vV9o7sr3iGcI0SG-30" edge="1">
@ -131,7 +131,7 @@
<mxCell id="jpdV1vV9o7sr3iGcI0SG-18" value="User A" style="rounded=1;whiteSpace=wrap;html=1;arcSize=40;fontColor=#000000;fillColor=#ffffc0;strokeColor=#ff0000;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1"> <mxCell id="jpdV1vV9o7sr3iGcI0SG-18" value="User A" style="rounded=1;whiteSpace=wrap;html=1;arcSize=40;fontColor=#000000;fillColor=#ffffc0;strokeColor=#ff0000;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="90" y="259" width="120" height="40" as="geometry" /> <mxGeometry x="90" y="259" width="120" height="40" as="geometry" />
</mxCell> </mxCell>
<mxCell id="jpdV1vV9o7sr3iGcI0SG-27" value="PCD" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1"> <mxCell id="jpdV1vV9o7sr3iGcI0SG-27" value="PCD" style="rounded=0;whiteSpace=wrap;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="89" y="639.9986486486487" width="120" height="40.54054054054054" as="geometry" /> <mxGeometry x="89" y="639.9986486486487" width="120" height="40.54054054054054" as="geometry" />
</mxCell> </mxCell>
<mxCell id="jpdV1vV9o7sr3iGcI0SG-80" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="jpdV1vV9o7sr3iGcI0SG-30" target="jpdV1vV9o7sr3iGcI0SG-33" edge="1"> <mxCell id="jpdV1vV9o7sr3iGcI0SG-80" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="jpdV1vV9o7sr3iGcI0SG-30" target="jpdV1vV9o7sr3iGcI0SG-33" edge="1">

Binary file not shown.

Before

Width:  |  Height:  |  Size: 104 KiB

After

Width:  |  Height:  |  Size: 104 KiB