Skip to Content

SAPUI5: Vererbung mit der JavaScript Klasse sap/suite/ui/commons/ProcessFlowNode

Sehr geehrtes SAPUI5 Team,

Ich habe folgendes Problem in meinem aktuellen Projekt.

Wir haben mit einer älteren SAPUI5 Bibliothek gearbeitet

(https://sapui5.hana.ondemand.com/1.46.12/resources/sap-ui-core.js) und die Bibliothek auf

https://sapui5.hana.ondemand.com/1.58.4/resources/sap-ui-core.js

umgestellt.

Dokumentation: https://sapui5.hana.ondemand.com/1.58.4/#/api/sap.suite.ui.commons.ProcessFlowNode

Dabei sind wohl in den SAP Bibliotheken Änderungen durchgeführt, die keine Vererbung mehr von der JavaScript Klasse ProcessFlowNode mehr erlauben.

var CustomProcessFlowNode = ProcessFlowNode.extend(… kann zwar durchgeführt werden und auch eine Instanz davon erzeugt werden, jedoch wird kein Rendern der abgeleiteten Klasse ausfolgendem Grund mehr durchgeführt!

Analyse des Sourcecodes: Fürs rendern wird die Klasse ProcessFlow verwendet. (Diese ruft dann die „Renderer“ der einzelnen Knoten (ProcessFlowNodes) auf.)

ProcessFlow unterscheidet sich in den Versionen =>

Version: 1.58.4

Klasse: sap/suite/ui/commons/ProcessFlow

Methode: b.NodeElement._createNodeElementsFromProcessFlowNodes = function(p, c)

Zeile1176 und Zeile1194 : if (n && n.getMetadata().getName() === "sap.suite.ui.commons.ProcessFlowNode") {

Erlauben nur noch direkt ProcessFlowNode Instanzen für die Verabreitung zum Rendern, da durch getMetadata().getName() direkt der Klassename abgefragt wird und nicht mehr abgeleitete Klassen verarbeitet werden.

In Version: 1.46.12 sah das noch anders aus.

Klasse: sap/suite/ui/commons/ProcessFlow

Methode: sap.suite.ui.commons.ProcessFlow.NodeElement._createNodeElementsFromProcessFlowNodes

Zeile 1177 und Zeile 1195: if (n instanceof sap.suite.ui.commons.ProcessFlowNode) {

  • die alte Bibliothek erlaubt mit instanceof eine Vererbung von ProcessFlowNode, die neuere Bibliothek macht das leider nicht.

Allgemeines Beispiel zu ProzessFlow ohne vererbte Nodes:

https://sapui5.hana.ondemand.com/1.58.4/#/entity/sap.suite.ui.commons.ProcessFlow

Wie wäre jetzt mit diesem Zustand eine Vererbung von ProcessFlowNode und damit eine kundenspezifische Erweiterung möglich?

Ist durch die Umprogrammierung in der Bibliothek gewünscht, dass keine Vererbung mehr möglich ist?

Vermutlich würde das zurückändern an mehreren Stellen im Code in „n instanceof sap.suite.ui.commons.ProcessFlowNode“ die Vererbung wieder erlauben. Vermutlich gibt es aber einen bestimmten Grund, weshalb das so geändert wurde?

Ein zeitnahes Feedback wäre sehr erwünscht.

Mit freundlichen Grüßen

Mathias Bischoff

Add comment
10|10000 characters needed characters exceeded

  • Get RSS Feed

3 Answers

  • Feb 25 at 11:51 AM

    OK, die Lösung ist

    ProcessFlow und Renderer komplett kopieren und die Hartcodieten Klassennamen in die Benutzerspezifischen Namen anpassen.

    Ein unschöner Weg, der normalerweise durch das SapUI5 Framework ermöglicht werden sollte.

    Ist da mit einer Verbesserung in neueren Versionen zu rechnen?

    MFG

    Mathias Bischoff

    Add comment
    10|10000 characters needed characters exceeded

  • Feb 25 at 11:54 AM

    Attached the question in english:

    Hello SAPUI5 Team,

    I have the following problem in my current project.

    We have worked with the older SAPUI5 library (https://sapui5.hana.ondemand.com/1.46.12/resources/sap-ui-core.js) and we changes to the following version https://sapui5.hana.ondemand.com/1.58.4/resources/sap-ui-core.js

    Documentation: https://sapui5.hana.ondemand.com/1.58.4/#/api/sap.suite.ui.commons.ProcessFlowNode

    Obviously there were done some changes in this Java Script class ProcessFlow and ProcessFlowNode that do not allow inheritation any more.

    var CustomProcessFlowNode = ProcessFlowNode.extend(… is possible to be done and I can create a valid instance, but no rendering (method renderer) in the derived class can be executed because of the following reason.

    The analyzation of the source code figured out that there is a problem with this class ProcessFlow è This class is calling the renderer of the single nodes (ProcessFlowNode) that are attached to the ProcessFlow class instance.

    Version: 1.58.4

    classe: sap/suite/ui/commons/ProcessFlow

    method: b.NodeElement._createNodeElementsFromProcessFlowNodes = function(p, c)

    line1176 and line1194 : if (n && n.getMetadata().getName() === "sap.suite.ui.commons.ProcessFlowNode") {

    Allows only direct processing of ProcessFlowNode instances for the execution of the renderer. Reason => getMetadata().getName() only gets the direct Name and not any more the derived class names. => unfortunately no processing any more for derived classes.

    In Version: 1.46.12 this was different.

    class: sap/suite/ui/commons/ProcessFlow

    method: sap.suite.ui.commons.ProcessFlow.NodeElement._createNodeElementsFromProcessFlowNodes

    line 1177 and line 1195: if (n instanceof sap.suite.ui.commons.ProcessFlowNode) {

    • The old libary version allows by using instance oft he inheritation of ProcessFlowNode. The newer library unfortunately does not allow it anymore

    There exists a general example concerning ProcessFlow without derived Nodes:

    https://sapui5.hana.ondemand.com/1.58.4/#/entity/sap.suite.ui.commons.ProcessFlow

    How is there an inheritation and extention for our customer of ProcessFlowNode possible and intended.

    Or maybe with the change of this library there is a really good reason with intention, that this is not any more possible?

    Probably the change back of several codelines in „n instanceof sap.suite.ui.commons.ProcessFlowNode“ would allow again the inheritation and processing of the rendering. Maybe there is a good reason for, why this was changed?

    A response within the next days would be nice.

    Best regards

    Mathias Bischoff

    Add comment
    10|10000 characters needed characters exceeded

  • Feb 25 at 12:00 PM

    OK, the solution is to copy

    ProcessFlow and Renderer Source and adapt classname to custom classname.

    A really ugly way, that should be provided by the SapUI5 framework .

    Are there improvements planed in newer Framework versions?

    Best regards

    Mathias Bischoff

    Add comment
    10|10000 characters needed characters exceeded