Loading
Inhalt
Filter auswählen

          Keine Ergebnisse
          Keine Ergebnisse
          Hier sind einige Suchtipps

          Überprüfen Sie die Schreibweise Ihrer Stichwörter.
          Verwenden Sie allgemeinere Suchbegriffe.
          Wählen Sie weniger Filter aus, um Ihre Suche auszuweiten.

          Gesamte Salesforce-Hilfe durchsuchen
          Benutzerdefinierte Eingabe und Ausgabe für OmniStudio-Datenzuordnungen in OmniStudio

          Benutzerdefinierte Eingabe und Ausgabe für OmniStudio-Datenzuordnungen in OmniStudio

          Standardmäßig verarbeiten Datenzuordnungen JSON- und XML-Daten. Wenn Sie andere Datenformate verarbeiten möchten, können Sie eine Datenzuordnung so konfigurieren, dass eine benutzerdefinierte Eingabe oder Ausgabe verwendet wird, die Sie implementieren. Beispielsweise können Sie eine Datenzuordnungstransformation definieren, die CSV-formatierte Daten akzeptiert und als JSON ausgibt.

          Folgende Optionen sind verfügbar:

          • Laden der Datenzuordnung: Benutzerdefinierte Eingabe (Ausgabe ist immer ein Salesforce-Objekt)

          • Datenzuordnungstransformation: Benutzerdefinierte Eingabe und Ausgabe

          • Datenzuordnungsextrakt: Benutzerdefinierte Eingabe und Ausgabe

          Legen Sie zum Konfigurieren einer Datenzuordnung für die Verwendung einer benutzerdefinierten Eingabe oder Ausgabe ihren Typ auf "Benutzerdefiniert" fest. Geben Sie dann die Klasse an, die die Methoden serialize und deserialize enthält, die den Vorgang ausführen. Die folgende Tabelle zeigt die Eigenschaften für eine Datenzuordnungstransformation, die mit einer benutzerdefinierten Eingabe und Ausgabe konfiguriert ist.

          Eigenschaft Wert
          Name der Datenzuordnungsschnittstelle Benutzerdefinierte Serialisierungstransformation
          Schnittstellentyp Umwandeln
          Eingabetyp Benutzerdefiniert
          Benutzerdefinierte Eingabeklasse CSVProcessor
          Ausgabetyp Benutzerdefiniert
          Benutzerdefinierte Ausgabeklasse CSVProcessor

          Zur Vereinfachung der Zuordnung können Sie Beispieleingaben in die Fenster "Erwartete Eingabe" und "Erwartete Ausgabe" einfügen.

          Wenn Sie die Logik erstellen möchten, die für die benutzerdefinierte Eingabe und Ausgabe erforderlich ist, müssen Sie eine benutzerdefinierte Klasse definieren, die Callable implementiert. Implementieren Sie für die benutzerdefinierte Ausgabe die Methode serialize. Implementieren Sie für benutzerdefinierte Eingaben die Methode deserialize. Die Eingabe- und Ausgabeparameter können nicht umbenannt werden.

          Das folgende Beispiel zeigt die grundlegende Struktur einer Kundenserialisierungs- und -deserialisierungsklasse.

          global with sharing class PreprocessorClassExample implements Callable {
             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);
              }
              private Object invokeMethod(String methodName, Map<String,Object> input, Map<String,Object> output, Map<String,Object> options) {
                  if (methodName == 'serialize') {
                      return serialize(input, output);
                  }
                  else if (methodName == 'deserialize') {
                      return deserialize(input, output);
                  }
                  return false;
              }
              /*
                  Serializes Apex objects into JSON content. Return String json
              */
              global Boolean serialize(Map<String, Object> input, Map<String, Object> output) {
                  String jsonString = '';            
                  // code
                  output.put('output', jsonString); // JSON String
                  return true;
              }
              /*
                  Deserializes the specified JSON string into collections of primitive data types. Return Object ((Map<String, Object>))
              */
              global Boolean deserialize(Map<String, Object> input, Map<String, Object> output) {
                  Map<String, Object> returnMap = new Map<String, Object>();
                  // code
                  output.put('output', returnMap); // ---> collections of primitive data types Map<String, Object>, List<Map<String, Object>>()
                  return true;
              }
          }

          Im folgenden Beispiel werden CSV-Daten serialisiert und deserialisiert.

          global with sharing class CSVProcessor implements Callable {
              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);
             }
             private Object invokeMethod(String methodName, Map<String,Object> input, Map<String,Object> output, Map<String,Object> options)
             {
             System.debug('METHOD NAME >>> ' + methodName);
                 if (methodName == 'deserialize')
                 {
                     return deserialize(input, output);
                 }
                 return false;
             }
             /*
             Example Output: 'Column2,Column1\nvalue0,value1.0\nvalue0.1,value1.1';
             */
             /*
             Deserializes the specified JSON string into collections of primitive data types. Return Object ((Map<String, Object>))
             Input: 'Column2,Column1\nvalue0,value1.0\nvalue0.1,value1.1';
             Output:
             [
                 {
                     "Column1Test": "value1.0",
                     "Column2Test": "value0"
                 },
                 {
                     "Column1Test": "value1.1sl",
                     "Column2Test": "value0.1"
                 }
             ]
             */
                  public class csvInput {
                      @AuraEnabled
                      public string VersionData;
                  }
                  global Boolean deserialize(Map<String, Object> input, Map<String, Object> output)
             {
                 System.debug(input);
                 System.debug(input.get('input'));
                 System.debug(input.toString());
                 //csvInput s = (csvInput)JSON.deserialize((string)input.get('input'), csvInput.class);
                 Object data = input.get('input');
                 csvInput s;
                 if(data instanceof String) {
                     s = (csvInput)JSON.deserialize(String.valueOf(data), csvInput.class);
                 } else { // try to preserve the source formatting
                     s = (csvInput)JSON.deserialize(JSON.serialize(data), csvInput.class);
                 }
                 Blob decodedInputBlob = System.EncodingUtil.base64Decode(s.VersionData);
                 String decodedCsvString = decodedInputBlob.toString();
                 Object inputValue = decodedCsvString;
                 System.debug(inputValue);
                 if (inputValue != null && inputValue InstanceOf String)
                 {
                     List<String> valueSet = ((String)inputValue).split('\n');
                     List<Map<String, String>> csvList = new List<Map<String, String>>();
                     List<String> columns = new List<String>();
                     for (Integer i = 0; i < valueSet.size(); i++)
                     {
                         String value = valueSet[i];
                         if (String.isBlank(value))
                         {
                             continue;
                         }
                         if (i == 0)
                         {
                             List<String> valSet = value.split(',');
                             for (Integer y = 0; y < valSet.size(); y++)
                             {
                                 columns.add(valSet[y]);
                             }
                         }
                         else
                         {
                             List<String> valSet = value.split(',');
                             if (columns.size() >= valSet.size())
                             {
                                 Map<String, String> rows = new Map<String, String>();
                                 for (Integer z = 0; z < valSet.size(); z++)
                                 {
                                     rows.put(columns[z], valSet[z]);
                                 }
                                 csvList.add(rows);
                             }
                         }
                     }
                     output.put('output', csvList);
                     //Map<String, Object> returnMap = new Map<String, Object>();
                     //output.put('output', returnMap);
                     System.debug(output);
                     return True;
                 }
                 return False;
             }
          }

          Angenommen, Ihre CSV-Datei weist den folgenden Inhalt auf:

          Name

          E-Mail

          Telefon

          Mary Baker

          mbaker@example.com

          415-555-3331

          Joe Baker

          jbaker@example.com

          415-555-3332

          Russell Baker

          rbaker@example.com

          415-555-3333

          Die Beispielklasse CSVProcessor konvertiert sie in die folgende JSON-Eingabe:

          [
            {
              "Name": "Mary Baker",
              "Email": "mbaker@example.com",
              "Phone": "415-555-3331"
            },
            {
              "Name": "Joe Baker",
              "Email": "jbaker@example.com",
              "Phone": "415-555-3332"
            },
            {
              "Name": "Russell Baker",
              "Email": "rbaker@example.com",
              "Phone": "415-555-3333"
            }
          ]
           
          Laden
          Salesforce Help | Article