Aufruf Multiflex aus Drittsoftware per Link
Beschreibung
Der Aufruf von Multiflex aus Drittsystemen kann mit einem Link erfolgen. Dabei kann auch direkt ein bestimmter Datensatz in Multiflex geöffnet werden (im entsprechenden Standard-Geschäftsprozess).
Beispiel-Link:
MX.ERP://openwindow?db=RUEBIGAT¶ms=TaskInx:11
Der Aufruf des Links kann über “Windows - Run” getestet werden:
Alternativ kann der Link auch in eine Webseite eingebettet werden:
<head>
</head>
<body>
test 123
<a href="MX.ERP://openwindow?db=ULBRICH_LOC¶ms=TaskInx:11">hier klicken</a>
</body>
Ausführen über “Windows - cmd” ist nicht möglich
Ausführen des Links direkt in einer Adressleiste des Browsers ist nicht möglich
Die Groß-/Kleinschreibung muss EXAKT eingehalten werden!
Funktionsweise
Beim Start von Multiflex trägt dieses in der Registry die benötigten URL-Informationen automatisch ein:
Zusätzlich wird der Pfad zur gestarteten LC.NET.EXE eingetragen. Dieser liegt normalerweise (bei einer ClickOnce-Verteilung) im User-Ordner unter AppData.
Wird nun die registrierte URL “MX.ERP://” ausgeführt, so wird das in der Struktur shell/open/command/ hinterlegte exe File ausgeführt.
Dieses prüft nun, ob bereits eine Named Pipe gestartet wurde. Falls nicht, ist also noch keine “lauschende” Multiflex Sitzung gestartet worden und es wird eine neue Instanz von Multiflex gestartet.
Damit beim Start von Multiflex automatisch auch der entsprechende PipeServer gestartet wird, ist die Grundlageneinstellung GRUNDLAGEN_WERTE - USE_PIPESERVER auf “true” zu setzen:
insert into grundlagen_werte (name, wert) values ('USE_PIPESERVER','true');
Ob der PipeServer korrekt gestartet wurde, ist an einem Registry-Eintrag sichtbar:
Tracing
Wird auf Laufwerk C: ein Unterordner mit dem Namen “_tctrace” angelegt, so werden Informationen zum Aufruf des exe Files in diesen Ordner in ein Log File protokolliert.
Aufruf aus Business Objects
Da Business Objects links nur darstellen kann, wenn diese mit “http” beginnen, muss eine “proxy” Webseite verwendet werden um die Weiterleitung durchzuführen.
In BO wird dann der Link auf diese Webseite erstellt und als Query String werden die erforderlichen Parameter übergeben.
Die Webseite leitet dann automatisch auf MX.ERP:// weiter und aktualisiert das ERP. Dabei wird der erhaltene Query String mit den Parametern ausgelesen und an den ERP-Aufruf weitergegeben.
Hier ist der Code der Webseite als Beispiel sichtbar - diese wurde im Beispiel im wwwroot-Verzeichnis abgelegt:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Redirecting...</title>
<script type="text/javascript">
// Function to parse query string parameters
function getQueryStringParams() {
const params = new URLSearchParams(window.location.search);
let paramStr = '';
params.forEach((value, key) => {
paramStr += key + '=' + value + '&';
});
return paramStr.slice(0, -1); // Remove trailing '&'
}
// Redirect with the query string
window.onload = function() {
const baseUrl = "MX.ERP://openwindow?";
const queryParams = getQueryStringParams();
if (queryParams) {
const fullUrl = baseUrl + queryParams;
window.location.href = fullUrl;
}
};
</script>
</head>
<body>
<p>Redirecting you...</p>
</body>
</html>
Einfügen einer Spalte in den BO-Bericht
In den Bericht wird eine neue Spalte eingefügt, die als HTML formatiert wird:
Beispiel:
Aufbau des Links:
Durch Klick auf den Link wird nun die oben erstellte Webseite aufgerufen und der Datenbankname und der Aufgabenindex als Parameter übergeben. Die Webseite leitet dann auf den MX.ERP:// Aufruf weiter. Hier wird eine Sicherheitsabfrage angezeigt, die mit “Open” zu bestätigen ist:
Anschließend wird im ERP der hinterlegte Standard-Geschäftsprozess betreten und die Aufgabe selektiert.
In manchen Browsern (hier Firefox) kann die Sicherheitsabfrage einmalig bestätigt werden und erscheint dann nicht mehr:
Bei Edge kann dies über eine Einstellung in der Gruppenrichtilinie (Group Policy) gesteuert werden:
ExternalProtocolDialogShowAlwaysOpenCheckbox
Ist dieser Wert “true”, dann wird auch in Edge die CheckBox zur einmaligen Bestätigung des Links angezeigt.
Mögliche Parameter
Aktuell sind folgende Parameter implementiert (Groß-/Kleinschreibung muss eingehalten werden):
Parameter | ||
---|---|---|
ProcessInx | INX des CRM-Vorgangs | Anmerkung: Aktuell keine Funktion |
TaskInx | INX der CRM-Aufgabe |