OneSpan Sign Developer: Conditional Fields - Partie 2

Duo Liang, mai 6, 2020

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"

Champs conditionnels

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!