Hallo in die Runde!
Kann ich mit to_base64 (https://metafacture.org/metafacture-documentation/docs/fix/Fix-functions.html#to_base64) auch den ganzen Record kodieren und in ein Feld schreiben?
@moebius75 Danke für die Frage.
Ich vermute aktuell nicht. Da wir derzeit keine Möglichkeit haben, um auf den gesamten Datensatz zuzugreifen, der die Basis für so eine Transformation wäre.
to_base64("Zielfeld")
Wir bräuchten den gesamten Datensatz als Wert im “Zielfeld”.
Mit Fuscherei und Wormholes wäre das vielleicht als Workaround möglich, falls dich das interessiert. Dann könnte man den kompletten Datensatz in ein Literal schreiben und ihn mit dem anderen Datensatz zusammenführen.
Das ist schade. Dann muss ich das über ein Preprocessing in den Datensatz einbringen.
Danke trotzdem ![]()
Ohne nähere Kenntnis über euer Setup und die Rahmenbedingungen zu haben, aber dies erscheint mir eine passende Gelegenheit zu sein, um einmal auf die Möglichkeit des Erstellens eigener Fix-Funktionen hinzuweisen. Es ist vergleichsweise einfach - sofern ihr Metafacture als Java-Library verwendet:
- Java-Klasse erstellen, die das Interface
FixFunctionimplementiert und die gewünschte Funktionalität bereitstellt. - (optional) Eigenen Funktionsnamen registrieren.
- In Fix per FQDN (oder eigenem Funktionsnamen) auf diese Funktion zugreifen.
Implementierung:
package org.example.fix;
// optional: import org.metafacture.metafix.FixCommand;
import org.metafacture.metafix.Metafix;
import org.metafacture.metafix.Record;
import org.metafacture.metafix.Value;
import org.metafacture.metafix.api.FixFunction;
import java.util.Base64;
import java.util.List;
import java.util.Map;
// optional: @FixCommand("record_to_base64")
public class RecordToBase64 implements FixFunction {
public RecordToBase64() {
}
@Override
public void apply(final Metafix metafix, final Record record, final List<String> params, final Map<String, String> options) {
record.set(params.get(0), new Value(Base64.getEncoder().encodeToString(record.toString().getBytes())));
}
}
Registrierung (optional):
// file: src/main/resources/fix-commands.properties
org.example.fix
Aufruf:
org.example.fix.RecordToBase64("base64")
# optional: record_to_base64("base64")
Vielleicht hilft das ja ![]()