In der DataEngine, speziell im Administrationsbereich, haben Sie die Möglichkeit, Marini Custom-Konfigurationen zu verwalten. Diese Funktion bietet einen zentralen Ort zur Speicherung von benutzerdefinierten Konfigurationen, die von Marini-Modulen oder benutzerdefinierten Funktionen verwendet werden. Dieses Dokument wird Sie durch die verschiedenen Abschnitte der Marini Custom-Konfigurationen führen, einschließlich der mass-transfer-scheduler
, postal-code-lookup
, name-workflow
und webhook
Konfigurationen.
Mass Transfer Scheduler
Einleitung
Der Abschnitt mass-transfer-scheduler
ermöglicht das Hinzufügen von Massenübertragungsplänen in DataEngine. Diese Zeitpläne werden verwendet, um Datensätze basierend auf bestimmten Bedingungen zu verarbeiten, die verschiedene Aktionen auslösen können, wie das Speichern von Datensätzen und das Ausführen von Workflows.
Konfigurationsbeispiel
Hier ist ein Beispiel für die Konfiguration des mass-transfer-scheduler
:
{
"mass-transfer-scheduler": [
{
"module": "core_Contacts",
"fieldName": "process_status_c",
"fieldValue": "hubengine",
"fieldValueNew": ""
},
{
"module": "core_Accounts",
"fieldName": "process_status_c",
"fieldValue": "hubengine",
"fieldValueNew": ""
}
]
}
In diesem Beispiel werden zwei Massenübertragungspläne für die Module core_Contacts
und core_Accounts
hinzugefügt. Sie werden alle Datensätze mit process_status_c
auf hubengine
verarbeiten und den Wert auf einen leeren String setzen. Diese Aktion löst das Speichern dieser Datensätze aus und führt anschließend alle mit den Datensätzen verknüpften Workflows aus.
Nachdem ein Massenübertragungsplan über die benutzerdefinierte Konfiguration hinzugefügt wurde, stellen Sie sicher, dass er in der Admin-Ansicht unter Zeitpläne aktiviert ist.
Wichtiger Hinweis: Bei Verwendung desselben Moduls, fieldName
und fieldValue
stellen Sie sicher, dass die Reihenfolge der Einträge nicht geändert wird. Andernfalls wird der zugehörige Zeitplan nach dem Speichern der Konfiguration möglicherweise nicht wie erwartet ausgeführt.
Postleitzahl-Lookup
Einleitung
Der Abschnitt postal-code-lookup
wird in Verbindung mit dem Modul Postal Code Package
(Version 1.0.5 oder höher) verwendet. Das Modul verwendet automatisch die Felder postalcode
und country
, um Stadt- und Staatsinformationen nachzuschlagen. Wenn diese Feldnamen in Ihrer Konfiguration unterschiedlich sind, können benutzerdefinierte Feldzuordnungen zur benutzerdefinierten Konfiguration hinzugefügt werden. Dies ist besonders nützlich, wenn die automatische Feldsuche von postalcode
für das Modul deaktiviert werden muss.
Konfigurationsbeispiel
Hier ist ein Beispiel für die Konfiguration des postal-code-lookup
:
{
"postal-code-lookup": [
{
"module": "full_example_Contacts",
"postalCodeField": "zipcode",
"cityField": "city",
"countryField": "country",
"stateField": "state",
"districtField": "district",
"defaultCountry": "US",
"countryCodeMapping": {
"D": "DE",
"USA": "US"
}
},
{
"module": "minimal_example_Contacts",
"postalCodeField": "zipcode",
"cityField": "town",
"countryField": "nation"
}
]
}
Dieses Beispiel ermöglicht die Konfiguration benutzerdefinierter Zuordnungen für den Postleitzahl-Lookup, einschließlich der Definition benutzerdefinierter Feldnamen und der Spezifikation des Standardlandes und der Ländercode-Zuordnungen.
Hinweis: Änderungen an dieser Konfiguration erfordern nach dem Speichern der Konfiguration einen Quick Repair and Rebuild-Vorgang.
Name Workflow
Einleitung
Der Abschnitt name-workflow
wird in Verbindung mit dem Modul NameWorkflow
verwendet. Anstelle von Workflows, die umfangreiche Prozessaufzeichnungseinträge generieren, ist dieses Modul so konzipiert, dass es basierend auf bestimmten Kriterien einen Namen zu einem Datensatz hinzufügt. Diese Konfiguration ist schlüsselwertbasiert, wobei der Schlüssel der Name des Moduls ist und der Wert angibt, wie der Name für den Datensatz generiert wird.
Konfigurationsbeispiel
Hier ist ein Beispiel für die Konfiguration des name-workflow
:
{
"name-workflow": {
"core_Contacts": {
"value": "{first_name} {last_name}",
"emptyValue": "Kein Name erforderlich",
"onlyIfEmpty": true
},
"minimal_example_Contacts": {
"value": "{first_name} {last_name}"
},
"more_examples": {
"value": "Erstellter Benutzer-ID: {created_by} Erstellter Benutzername: {created_by_name}"
},
"more_examples_2": {
"value": "Name des ersten Verwandten: {test_test_drama_move_1}"
}
}
}
Diese Konfiguration ermöglicht es Ihnen, festzulegen, wie der Name des Datensatzes generiert werden soll. Es ist möglich, Feldwerte des Datensatzes im Namen zu verwenden, indem Sie den Feldnamen in geschweiften Klammern verwenden. Wenn ein
Beziehungsfeld als Ersatz verwendet wird, wird der Name des zugehörigen Datensatzes verwendet.
Wenn der Wert am Ende leer ist, wird der Name auf den Wert von emptyValue
gesetzt, wenn dieser festgelegt ist. Wenn onlyIfEmpty
auf „true“ gesetzt ist, wird der Name nur festgelegt, wenn er leer ist, und wird nicht aktualisiert, wenn der Name bereits festgelegt ist.
WebHook
Einleitung
Der Abschnitt webhook
wird in Verbindung mit dem Modul Webhook Integration
verwendet. Er ermöglicht das Festlegen benutzerdefinierter Zuordnungen für Webhooks in DataEngine. Jeder Eintrag ordnet Felder für bestimmte Eingabe-JSON-Daten zu. Diese Zuordnung ist besonders nützlich, wenn die automatisch generierten Feldnamen zu lang sind oder wenn die Feldnamen vom Modul nicht zugelassen werden.
Konfigurationsbeispiel
Hier ist ein Beispiel für die Konfiguration des webhook
:
{
"webhook": {
"test_test": {
"testarray": "properties_testarray_3_la",
"properties_testarray": "properties_testarray_1"
}
}
}
Diese Konfiguration ordnet Felder für Eingabe-JSON-Daten zu und gibt an, welche Felder von der Webhook-Integration verwendet werden sollen.
Reports für DetailView Pages
Einleitung
Der Abschnitt detailview-report
bietet die Möglichkeit, Reports zu DetailView-Ansichten eines Moduls hinzuzufügen. Bei den eingebundenen Reports wird die ID des aktuell angezeigten Eintrags als Filter gesetzt, sofern die ID als Parameter im Report freigegeben ist. Diese Funktion ermöglicht die Anzeige spezieller Reports für den aktuellen Eintrag direkt auf der DetailView-Ansicht.
Es stehen zwei Slots zur Verfügung – belowContent
und sidebar
. belowContent
befindet sich zwischen der DetailView und den SubPanels, während sidebar
eine zusätzliche rechte Sidebar ist, die in diesem Fall eingeblendet wird und eine Breite von 25% hat. Jeder Slot kann mehrere Reports beinhalten und ist in ein 12er Grid aufgebaut, ähnlich dem Dashboard.
Konfigurationsbeispiel
Hier ist ein Beispiel für die Konfiguration des detailview-report
:
{
"detailview-report": {
"test_test": {
"belowContent": [
{
"id": "7f08139b-0ac0-9f9f-8006-656f37a8ff55",
"onlyCharts": true,
"charts": [
"Anmeldung pro Tag"
],
"layout": {
"x": 0,
"y": 0,
"w": 3,
"h": 4
}
},
{
"id": "3cfdfcc0-18e2-c60a-7d8d-656f3af1a62b",
"onlyCharts": true,
"charts": [
"Durchschnitt"
],
"layout": {
"x": 6,
"y": 0,
"w": 6,
"h": 4
}
}
],
"sidebar": [
{
"id": "7f08139b-0ac0-9f9f-8006-656f37a8ff55",
"onlyCharts": false,
"charts": [],
"layout": {
"x": 0,
"y": 0,
"w": 12,
"h": 4
}
},
{
"id": "3cfdfcc0-18e2-c60a-7d8d-656f3af1a62b",
"onlyCharts": false,
"charts": [],
"layout": {
"x": 0,
"y": 4,
"w": 12,
"h": 4
}
}
]
}
}
}
Diese Konfiguration fügt je zwei Reports zu beiden Slots für das Modul test_test
hinzu. Die Reports in belowContent
zeigen nur die Diagramme an (onlyCharts: true
), während die Reports in der sidebar
nur die Tabellen anzeigen (onlyCharts: false
und charts: []
). Die Layout-Anweisungen ermöglichen eine benutzerdefinierte Anordnung der Reports, wobei die Höhe dynamisch angepasst wird, um Überlappungen zu vermeiden.
Hinweis: Es ist zu beachten, dass die Seitenladezeit zunimmt, wenn mehr Reports hinzugefügt werden. Daher sollte die Anzahl der hinzugefügten Reports sorgfältig abgewogen werden.
Möchte man die Breite der Sidebar ändern, kann dies über Custom CSS gelöst werden.
Hier das Beispiel für 25% Spaltenbreite:
.bootstrap-container.expandedSidebarRight {
width: 75%;
}
#right-sidebar {
width: calc(25% - 25px);
}
#buttontoggle-right {
right: calc(25% - 25px);
}
@media (min-width: 1200px) {
.bootstrap-container.expandedSidebarRight.expandedSidebar {
width: 55%;
}
}
@media (min-width: 1230px) {
.bootstrap-container.expandedSidebarRight.expandedSidebar {
width: 57%;
}
}
@media (min-width: 1300px) {
.bootstrap-container.expandedSidebarRight.expandedSidebar {
width: 58%;
}
}
@media (min-width: 1400px) {
.bootstrap-container.expandedSidebarRight.expandedSidebar {
width: 59.2%;
}
}
@media (min-width: 1500px) {
.bootstrap-container.expandedSidebarRight.expandedSidebar {
width: 60.2%;
}
}
@media (min-width: 1600px) {
.bootstrap-container.expandedSidebarRight.expandedSidebar {
width: 61.2%;
}
}
@media (min-width: 1800px) {
.bootstrap-container.expandedSidebarRight.expandedSidebar {
width: 62.2%;
}
}
@media (min-width: 1900px) {
.bootstrap-container.expandedSidebarRight.expandedSidebar {
width: 63.2%;
}
}
@media (min-width: 2100px) {
.bootstrap-container.expandedSidebarRight.expandedSidebar {
width: 64.2%;
}
}
@media (min-width: 2300px) {
.bootstrap-container.expandedSidebarRight.expandedSidebar {
width: 65%;
}
}