OneSpan Sign Developer: Conditional Fields - Partie 2
Les champs conditionnels peuvent être utiles lorsque votre processus de signature comprend des flux de travail conditionnels. Dans le dernier blog, nous avons passé en revue les fonctionnalités, présenté comment créer des logiques conditionnelles à travers l’interface utilisateur, et démontré comment il apparaît dans la piste de vérification.
Dans la deuxième partie, nous allons poursuivre cette série et explorer comment vous pouvez tirer parti de la fonctionnalité grâce à REST API.
Bases logiques conditionnelles
Avant de commencer, passons en revue les bases de la logique conditionnelle. La logique conditionnelle consiste à tester une condition, puis à prendre des mesures :
SI 'certaines conditions' THEN 'prendre des mesures'
Par exemple, les énoncés logiques pourraient être :
- "SI le champ de texte A n’est pas vide, PUIS désactiver le champ de texte B"
- "Si l’option A est sélectionnée, PUIS activez le champ de texte B"
- "Si la case À cocher A est cochée, PUIS faire la signature B requise"
Logique conditionnelle dans REST API
Comment les conditions et les actions sont-elles représentées?
L’un des défis techniques est de savoir comment représenter la condition et l’action afin que OneSpan Sign puisse précisément consommer l’entrée de l’intégration.
Prenez le cas d’utilisation "SI la case À cocher A est cochée, PUIS faire la signature B nécessaire", par exemple. La condition et les clauses d’action peuvent être représentées par les éléments suivants :
IF: document['3eb29c43d0c7bc89cb2ade919e59e59ed42eb6a961a87a1af17'].field['JhC78qm5yl41'].value 'X'
THEN: document['3eb29c43d0c7bc89cb2ade919e59e59ed42eb6a961a87a1af17'].field['FnS4PJPF0EAY'].requis
De là, nous utilisons la notation de support pour localiser le champ. Comme l’expression de condition ci-dessus, il fait référence au champ (avec ID de "JhC78qm5yl41") sous le document (avec ID de "3eb29c43d0c7bc89cb2ade919e59ed42eb6a961a87a1af17").
Note: Nous n’avons pas précisé l’ID signature, il est donc important de s’assurer que l’ID de champ est unique dans le document pour éviter toute confusion.
Dans le tableau ci-dessous, nous opposerons toutes les conditions et les actions sous-jacentes qui pourraient être appliquées aux champs pris en charge.
Condition
Sous-type de champ | Description | Nom de la propriété | Valeurs possibles |
Champ de texte / Zone de texte | Si le champ de texte A est (pas) vide | Vide | vrai/faux (boolean) |
Case | Si la case à cocher A est (non) vérifiée | Valeur | 'X' / ''(corde) |
Radio | SI la radio A est (non) sélectionnée | Valeur | 'X' / '' (corde) |
Liste | SI 'optionX' est sélectionné dans la liste A | Valeur | 'optionX' (corde) |
Note: Pour un champ "List", la valeur de l’option est sensible aux cas. Et parce que les déclarations de condition / action seront plus tard passées comme une chaîne, utiliser une apostrophe au lieu d’une marque de citation et n’oubliez pas de leur échapper.
Action
Sous-type de champ | Description | Nom de la propriété | Valeurs possibles |
Tous les champs soutenus | THEN activer/ désactiver le champ B | désactivée | vrai / faux (boolean) |
Tous les champs soutenus | THEN marque champ B comme requis / facultatif | Obligatoire | vrai / faux (boolean) |
Note: Dans la mise en œuvre actuelle, l’action n’est pas disponible pour les types de terrain ci-dessous :
- Champs personnalisés
- Champs de notaires
- Champs auto-peuplés (p. ex. Nom, Titre, Date)
- Étiquettes
- Pièces jointes
Comme un exercice rapide qui fait référence à la table ci-dessus, vous pouvez facilement écrire l’expression "IF case A est sélectionné, PUIS activez le champ de texte B" comme indiqué ci-dessous:
IF : document ['document_ID'].champ['checkboxA_ID'].valeur 'X'
THEN: document['document_ID'].field['textfieldB_ID'].disabled 'faux
CONSEIL: Un moyen facile de tester contre votre entrée est d’implémenter la même logique à la page de concepteur. Ensuite, tirez le paquet JSON et comparez avec votre expression.
Comment puis-je passer dans les expressions préparées?
Sous le paquet JSON, vous pouvez trouver les métadonnées concernant les logiques conditionnelles au tableau des « conditions ». Pour chaque nœud, «condition» et «action» sont deux attributs requis, où vous pouvez passer dans les déclarations que nous avons préparé ci-dessus comme une chaîne. Optionnellement, vous pouvez définir une pièce d’identité pour la logique. L’exemple ci-dessous vous donne une idée de l’apparence du JSON :
"conditions": [
{
"id": "condition1",
"condition": "document['document1'].field['checkbox1'].value 'X'",
"action": "document['document1'].field['textfield1'].disabled 'faux"
}
]
Avec ce JSON, vous pouvez construire un paquet entièrement cuit JSON et envoyé la transaction en un seul coup:
Demande HTTP
POST /api/packages
En-têtes HTTP
Accepter : application/json
Type de contenu : multiparties/form-data
Autorisation: api_key de base
Clé de formulaire-données " charge utile "
{
"conditions": [
{
"id": "condition1",
"condition": "document['document1'].field['checkbox1'].value 'X'",
"action": "document['document1'].field['textfield1'].disabled 'faux"
}
],
"statut": "SENT",
"rôles": [
{
"id": "Signer1",
"nom": "Signer1",
"signataires": [
{
"email": "[email protected]",
"Prénom": "John",
"dernier nom": "Smith"
}
]
}
],
"documents": [
{
"id": "document1",
"approbations": [
{
"rôle": "Signer1",
"id": "approval1",
"champs": [
{
"page": 0,
"id": "checkbox1",
"sous-type": "CHECKBOX",
"gauche": 262,
"largeur": 20,
"hauteur": 20,
"top": 318,
"type": "INPUT"
},
{
"page": 0,
"id": "textfield1",
"sous-type": "TEXTFIELD",
"gauche": 263,
"largeur": 266,
"hauteur": 59,
"top": 388,
"type": "INPUT"
},
{
"page": 0,
"id": "signature1",
"sous-type": "FULLNAME",
"gauche": 236,
"largeur": 266,
"hauteur": 59,
"top": 561,
"type": "SIGNATURE"
}
]
}
],
"nom": "Document1"
}
]
}
Voilà. Cette revue vous aidera à créer les expressions logiques conditionnelles et à les inclure dans la création d’un API de création d’emballages. Dans le prochain blog de cette série, nous allons vous guider à travers d’autres API liées à des domaines conditionnels et d’enquêter sur la façon d’atteindre les mêmes objectifs dans nos SDKs.
Si vous avez des questions concernant ce blog ou toute autre chose concernant l'intégration de OneSpan Sign dans votre application, visitez les Forums communautairesdes développeurs . Vos commentaires sont importants pour nous!