Loading
Table des matières
Sélectionner des filtres

          Aucun résultat
          Aucun résultat
          Voici quelques conseils de recherche

          Vérifiez l'orthographe de vos mots-clés.
          Utilisez des termes de recherche plus généraux.
          Sélectionnez moins de filtres pour élargir votre recherche.

          Recherchez dans toute l’aide de Salesforce
          Exemple de code Apex pour des fonctions personnalisées

          Exemple de code Apex pour des fonctions personnalisées

          Développez des classes Apex pour implémenter des fonctions personnalisées à utiliser avec les Mappeurs de données Omnistudio et les Procédures d'intégration. Un exemple de classe Apex implémente trois méthodes qui peuvent être appelées en tant que fonctions personnalisées dans des formules Omnistudio. La classe inclut un code qui transmet une liste à une fonction personnalisée.

          Les mappeurs de données et les procédures d'intégration peuvent invoquer ces fonctions pour convertir une liste en tableau, remplacer un caractère par un autre ou reformater les numéros de téléphone. La classe et la invokeMethod des fonctions personnalisées doivent être globales.

          La fonction convert

          La première fonction personnalisée, convert, convertit une liste de valeurs sans clé en tableau de valeurs avec clés. La signature de la fonction est :

          FUNCTION('MyCustomFunctions', 'convert', LIST(%Inputlist%), %ListKey%)

          Si la clé de liste est "Item" et que la liste d'entrée est :

          {
            "InputList": [ "abc", "def", "ghi" ]
          }

          Le résultat est :

          {
            [
              {
                "Item": "abc"
              },
              {
                "Item": "def"
              },
              {
                "Item": "ghi"
              }
            ]
          }

          La fonction replace

          La deuxième fonction, replace, remplace un caractère d'une chaîne par un autre caractère. La signature de la fonction est :

          FUNCTION('MyCustomFunctions', 'replace', %InputString%, %ToReplace%, %ReplaceWith%)

          Si la chaîne d'entrée est my-input-string, que le caractère à remplacer est - et que le caractère à remplacer est _, le résultat est my_input_string.

          La fonction formatPhoneNumber

          La troisième fonction, formatPhoneNumber, convertit un numéro de téléphone au format (nnn) nnn-nnnn. Le numéro ne doit pas inclure d'indicatif de pays, un indicatif régional à 3 chiffres, un échange à trois chiffres et une longueur totale d'au moins neuf chiffres. La signature de la fonction est :

          FUNCTION('MyCustomFunctions', 'formatPhoneNumber', %Phone%)

          Si l'entrée est 123.456.7890, 123-456-7890 ou 1234567890, le résultat est (123) 456-7890.

          Transmission d'une liste à une fonction personnalisée

          Si l'entrée de votre fonction personnalisée est de type List<Object>, Apex enregistre l'entrée dans une clé de VLOCITY-FORMULA-LIST. Pour récupérer l'entrée, utilisez un code qui récupère cette clé.

          static List<Map<String, Object>> FUNCTION(List<Object> inputs)
          {
            List<Object> listInput = ((Map<String, Object>)inputs[0]).get('VLOCITY-FORMULA-LIST');
            Object variableInput = inputs[1];
                        
            // Rest of function
          }

          Pour un exemple de fonctionnement qui transmet une liste à une fonction personnalisée, consultez l'implémentation de la fonction convert dans l'exemple de code.

          La classe Apex

          Les fonctions personnalisées que nous venons de décrire sont définies en tant que méthodes de la MyCustomFunctions de classe. Pour plus d'informations sur l'appel de fonctions personnalisées et des exemples des trois fonctions personnalisées définies dans la classe, consultez Fonction Omnistudio FUNCTION.

          global class MyCustomFunctions implements Callable
          {
                  
              /*
               * input  - arguments - List<Object> of arguments passed to the function
               * output - result    - The function supports single Object values, List<Object>,
               *                      or Map<String, Object>
               */
                  
              public Object call(String action, Map<String, Object> args)
              {
                  Map<String, Object> input = (Map<String, Object>) args.get('input');
                  Map<String, Object> output = (Map<String, Object>) args.get('output');
                  Map<String, Object> options = (Map<String, Object>) args.get('options');
                  return invokeMethod(action, input, output, options);
              }
                  
              global Boolean invokeMethod(String methodName, Map<String, Object> inputs,
                  Map<String, Object> output, Map<String, Object> options)
              {
                  if (methodName == 'convert') {
                      List<Object> arguments = (List<Object>) inputs.get('arguments');
                      output.put('result', convert(arguments));
                  } else if (methodName == 'replace') {
                      List<Object> arguments = (List<Object>) inputs.get('arguments');
                      output.put('result', replace(arguments));
                  } else if (methodName == 'formatPhoneNumber') {
                      List<Object> arguments = (List<Object>) inputs.get('arguments');
                      output.put('result', formatPhoneNumber(arguments));
                  }
                  return true;
              }
                  
              private LIST<Map<String, Object>> convert(List<Object> arguments)
              {
                  try {
                      LIST<Map<String, Object>> result = new LIST<Map<String, Object>>();
                      Map<String, Object> inputlist = (Map<String, Object>) arguments[0];
                      String key = (String) arguments[1];
                      List<Object> listofElements = (List<Object>) inputlist.get('VLOCITY-FORMULA-LIST');
                      for (Object str : listofElements) {
                          result.add(new Map<String, Object>{key => str});
                      }
                      return result;
                  } catch(Exception e) {
                      return new LIST<Map<String, Object>>(); 
                  }
              }
                  
              private String replace(List<Object> arguments)
              {
                  String result = '';
                  String inputlist = (String) arguments[0];
                  String toreplace = (String) arguments[1];
                  String replaceby = (String) arguments[2];
                  result = inputlist.replaceAll(toreplace, replaceby);
                  return result;
              }
                  
              public string formatPhoneNumber(List<Object> arguments)
              {
                  String Phoneno = arguments[0] + '';
                  String formattedPhone = Phoneno.replaceAll('[^0-9+]', '');
                  String NewFormat;
                  if (String.isNotBlank(formattedPhone) && formattedPhone.length() >= 9) {
                      String first = formattedPhone.subString(0, 3);
                      String second = formattedPhone.subString(3, 6);
                      String third = formattedPhone.subString(6);
                      NewFormat = '(' + first + ')' + ' ' + second + '-' + third;
                  }
                  return NewFormat;
              }
                  
          }
           
          Chargement
          Salesforce Help | Article