Release-Notes Versionen 23.3.x
Anpassungen in der Maskendarstellung
Zahlreiche Masken und Anwendungsdialoge wurden an das moderne Flex-Design mit Karten angepasst. Darüber hinaus werden Mono-Icons in der Toolbar im SVG-Format verwendet.
Beispiele für Änderungen:
dezente Linie im Header
Comboboxen
Suchen und iIhre Edition
E-Mail-Dialoge
Kalender
Tabellen
Memoview
Abbildung: SVG-Symbole in der Tool-Bar der Anwendung
Neutraler Zustand für Filterkomponente
Die Filterkomponente kennt für Booleans die Zustände true und false. Es gibt Situationen, in denen Einträge ungefiltert angezeigt werden sollen. Dabei dürfen diese Kriterien nicht berücksichtigt werden.
Werden die Kriterien nicht berücksichtigt, so ist es möglich, eine Gesamtansicht aller im System befindlichen Pakete zu erhalten. Neutraler Zustand kann genau so in einem anderen Filter-Kontext eingesetzt werden.
Abbildung: Neutrales Kriterium weder 'false' noch 'true'
Stücklisten und Angebotspositionen
Entität Stücklisten (auch Unterprodukte, techn. ItemsList
) wurde um das Feld Einzelpreis (techn. Unitprice.ItemsList
) erweitert. Die bereits existierende Logik zur Anlage von Angebotspositionen aus Unterprodukten wurde so erweitert, so dass der Wert des Feldes Einzelpreis (Unitprice.ItemsList
) - wenn gefüllt - nach Unitprice.QuoteItem
übernommen wird. Ist das Feld Einzelpreis, greift die bisherige Logik und die Füllung erfolgt aus dem Produktstamm.
Der Positionstext der Positionen (Itemstext.QuoteItem
) wird mit dem Text aus ProdDescName.ProdDesc
+ zwei Zeilenwechsel + Description.ProdDesc
sprachabhänig vorbelegt, sofern die Daten gefüllt sind.
Es wird die zum Unterprodukt hinterlegte Information in den Itemstext übernommen.
Abbildung: Das Feld 'Einzelpreis' in der Stückliste
Ausführung der serverseitigen Excelgenerierung in BPM
Die Generierung von Exceldateien basierend auf Excelvorlagen kann neuerdings auch im Rahmen eines BPM-Prozesses angestoßen werden. Somit können Excel-Vorlagen auch ohne Unterbrechung eines Prozesses verwendet werden und erlauben eine nahtlose Benutzerführung.
Hierfür steht innerhalb der BPM-Suite eine neue Variante in der Massendaten-Aktion zur Verfügung - "Excelvorlage". Hier kann der Prozessbauer den Assistenten der Excelgenerierung mit Werten vorbelegen. Im Idealfall kann der Assistent so konfiguriert werden, dass der Assistent nicht mehr angezeigt wird und die Generierung komplett auf dem Server erfolgt. Folgende Bedingungen müssen hierzu erfüllt sein:
Die Serveraktion ist so konfiguriert, dass alle gewählten Aktionen ohne Assistent ausgeführt werden
Alle Felder im Assistenten sind belegt, so dass eine Ausführung eigentlich möglich wäre
Es gibt aber dennoch Situationen, die ein Öffnen der Exceldatei erforderlich machen und somit zum Öffnen des Assistenten führen (obwohl anders konfiguriert).
Folgenden Bedingungen führen zum Öffnen des Assistenten:
Es soll kein Dokumentendatensatz erzeugt werden
→ Dies ist die einzige Möglichkeit für den Anwender dass Dokument zu sichtenDie generierte Exceldatei ist ein makrobehaftetes Ausgabeformat und der Start eines Makros ist in der CONFIG-Lasche konfiguriert
→ Das Makro muss vor einer weiteren Verarbeitung ausgeführt werden. Da die Makroausführung nur auf dem Client erfolgen, muss dies hier passierenIn der Excelvorlage ist der Rücktransfer ins CRM in der Lasche CONFIG konfiguriert
→ Die Exceldatei muss vor dem Rücktransfer geöffnet werden, da der Anwender noch die Möglichkeit haben muss, die Daten in der Exceldatei anzupassen. Die Änderungen des Anwenders können Auswirkungen auf die zurückzuschreibenden Daten ins CRM haben und müssen daher vor dem Transfer erfolgen.
Vereinfachte Bearbeitung einer generierten Excel-Datei
Bei der Verwendung der Excel-Vorlagen im Modus NATIVE, war bisher die Benutzerführung umständlich. Man musste mehrere Schritte im Assistenten durchklicken, den Dokumentendatensatz manuell suchen, den Datensatz öffnen und dann noch das Dokument selbst öffnen, um das generierte Dokument geöffnet in Excel vor sich zu haben.
Die Schritte zum direkten Öffnen des Dokumentes wurden nun reduziert.
Voraussetzungen:
In der Excelvorlage ist kein Rücktransfer konfiguriert
Die Option "Suchfenster und Auswahldialog anzeigen" (CONF_SEARCHDIALOG) in der Excelvorlage enthält den Wert NONE oder NEIN
Der Konfigurationsparameter CONF_APPL_AVOID_INSTANT_OPEN ist im Standard auf "Nein" gestellt, sodass das neue Verhalten bei Excelvorlagen (= Reduzierung der Schritte im Assistenten) im Standard greift
In den Benutzereinstellungen im Bereich Integration die Option "Dokumentensatz nach dem Import öffnen" mit dem Wert "Ohne Assistenten - nur mit Datensatz verknüpfen" wählen
Sind die Voraussetzungen gegeben, so wird sowohl die generierte Exceldatei als auch der zugehörige Dokumentendatensatz direkt aus der Taskliste für die Bearbeitung geöffnet.
Abbildung: Generierte Excel-Datei, die ohne Assistenten geöffnet werden kann
Folgende Aktionen stehen hier zur Verfügung:
Exceldatei bearbeiten
Es wird der Dokumentendatensatz in einer neuen Ebene geöffnet und die generierte Exceldatei direkt geöffnet.
Zweck: Eine Bearbeitung der Exceldatei durch den Anwender ist erwünscht.Aus der Liste entfernen
Die Exceldatei wurde ebenfalls generiert und als Dokumentendatensatz im CRM angelegt. Es erfolgt jedoch kein Öffnen des Dokuments. Stattdessen wird der Eintrag aus der Taskliste entfernt.
Zweck: Eine Bearbeitung der Exceldatei durch den Anwender ist nicht notwendig.
Sind die genannten Voraussetzungen erfüllt, wird das direkte Öffnen der generierten Exceldatei im Tasklisteneintrag automatisch angeboten. Eine Anpassung der Vorlagen durch den Kunden ist somit nicht notwendig.
Ist es im Einzelfall dennoch gewünscht, den Assistenten weiterhin zu verwenden, so kann dies durch den zusätzlichen Konfigurationsparameter "CONF_APPL_AVOID_INSTANT_OPEN" in der Excelvorlage gesteuert werden.
Abbildung: Konfiguration der Excel-Vorlage
Datenqualität und inaktive Datensätze
Ist ein Feld als "relevant für Datenqualität" gekennzeichnet und es steht ein inaktiver Datensatz in diesem Feld (= invalides Nachschlagefeld), so wird es in der Berechnung nun als "nicht gefüllt" gewertet. Inaktive Datensätze, wie z.B. ein Mitarbeiter, der ausgeschieden ist, sollen mit aktiven ersetzt werden, um die Datenqualität zu verbessern.
Duplizierte Felder in der Entität 'Angebot'
Die nachfolgenden Felder wurden aus der Anfrage in die Entität Angebot dupliziert, weil das Angebotswesen ausschließlich in den Angeboten abgebildet wird. Die Bezeichnungen und Konfigurationen sind in den neuen Feldern im Angebot zu den bereits vorhandenen Feldern in der Entität Anfrage identisch.
Erfolgsaussicht (ChanceSuccessKey.Opportunity)
Kaufdatum (Salesdate.Opportunity)
Neukunde (NewCustomer.Opportunity)
Wettebewerber (CompetitorKey.Opportunity)
Bestelldatum (OrderDate.Opportunity)
Bestellbezug (Orderreference.Opportunity)
Begründung (ProfitLossReasonKey.Opportunity)
Erläuterung (ProfitLossReason.Opportunity)
Bestimmte Informationen werden aus dem Angebot in die Anfrage übertragen (z. B. Angebotswert zu Anfragewert). Die Erfolgswahrscheinlichkeit wird aus Gründen der Rückwärtskompatibilität explizit nicht synchronisiert. Bisher wurde die Wahrscheinlichkeit ausschließlich in der Anfrage gepflegt. Das funktioniert weiterhin. Anwender, die das neue Feld im Angebot nutzen, können dies ohne Auswirkungen tun, ohne auf das bisherige Verhalten achten zu müssen.
Neuanlagen über die Kacheln Ansprech-/Geschäftspartner-Porträt
Mithilfe der Kacheln Ansprech- und Geschäftspartner-Porträt ist es nun möglich, Neuanlagen via einem Plus-Button neben der Badge-Anzeige durchzuführen. Die Neuanlagen verhalten sich genau so, wie sie zustande kommen würden, wenn die Neuanlage über den Unterbereich getätigt wird, somit werden auch sämtliche Vorbelegungen von Feldern durchgeführt.
Abbildung: Kacheln Ansprech- und Geschäftspartner-Porträt
Umbenennung in Einstellungen für Customizing-Pakete
Die Einstellungen für den Customizing-Transport im Web besitzen für die unterschiedlichen Server zur Annahme, zum Entsperren und dem Transport von Customizing-Paketen nur noch die Überschrift "SERVER" anstatt "WSDL-ADRESSEN PFLEGEN".
Abbildung: Customizing-Einstellungen
Auswertung und Visualisierung des Forderungsausfallscores
Die Darstellung der Kachel "Kundenwert" wurde verbessert.
Kundenwert-Kachel wurde um Darstellung des Forderungsausfallscores ergänzt (Darstellung analog zum Churnscore)
Die Darstellung auf dem Infoboard Kundenwert auf dem Geschäftspartner wurde um die Selektion von Handlungsempfehlungen mit Forderungsausfallscore erweitert
eine Handlungsempfehlung wird dann angezeigt
wenn der Forderungsausfallscore des aktuellen Kundenwert-Datensatzes des Kunden in der in der Handlungsempfehlung eingetragenen Range von/bis liegt
alle übrigen Kriterien der Handlungsempfehlung mit dem aktuellen Kundenwert-Datensatz des Geschäftspartners übereinstimmen und der Forderungsausfallscore von/bis in der Handlungsempfehlung leer ist
Das Infoboard Kundenwert (Desktop-Board) wurde um die Berechnung und Anzeige des Werte „Durchschnittlicher Forderungsausfallscore“ ergänzt
Spanische Internationalisierung der Anwendung
Die Anwendung steht auch in der spanischen Sprache zur Verfügung.
Konfiguration
Durch den Start mit den Parametern
set LANGUAGE_OPTS=-Duser.language=es -Duser.country=ES
(vgl. runEN.bat) wird die spanische Sprache angezeigt.Administrator kann die spanische Sprache im Internationalisierungseditor oder per rechte Maustaste auf Feldern, Entitäten und Relationen ändern. Dies gilt auch für die Beschreibung in der Schlüsselverwaltung.
Das spanische Datumsformat wird mit dd-mm-yyyy dargestellt.
Beim Export von Suchen wird die spanische Sprache für die Schlüsselwörter der Einfeldsuche mit exportiert.
Webservice zur Entgegennahme von Zeitereignissen
Um die Schnittstellen flexibler zu gestalten, wurden die Event-Rest-Services überarbeitet.
Zeitereignisse können per Rest-Service im CRM abgelegt werden.
URL: /rest/api/event/v1/events
Dokumentation: /rest/doc/v1/services/event
Dem Aufruf als POST können der Typ des Ereignisses, optional der Zeitpunkt (Standard ist der Zeitpunkt des Aufrufs) und ein Payload im JSON-Format mitgegeben werden. Der eventType
ist eine fachliche Kennung des Zeitereignisses und sollte wie folgt aufgebaut sein:
<Top-Level-Domain>.<Second-Level-Domain>.<fachliche Kennung> → de.cursor.portalAccess, org.company.calculation
{
"eventType" : "domain.myEventType",
"payload" : {
"key1" : "stringValue",
"key2" : 1987,
"key3" : true
}
}
Zur Vereinfachung des Aufrufs wurde eine alternativer Service-URL zur Verfügung gestellt:
URL: /rest/api/event/v1/events/type/{eventType}
Beispiel: /rest/api/event/v1/events/type/domain.myEventType
{
"key1" : "stringValue",
"key2" : 1987,
"key3" : true
}
Über zusätzliche Parameter in der URL, können weitere Optionen den Services mitgeliefert werden. (Beispiel: /rest/api/event/v1/events/type/domain.myEventType?async=true¶llel=true)
dateTime: Das Datum des Ereignisses wird im Standard aus der aktuellen Systemzeit ermittelt. Mit diesem Parameter kann das Datum im ISO-8601 Format überschrieben werden.
async: Kann mit dem Wert "true" aktiviert werden. Das Ereignis wird in einer Warteschlage eingereiht und geprüft. Die Verarbeitung des Ereignisses läuft asynchron ab.
parallel: Bei der asynchronen Ausführung der Ereignisse bleibt die Reihenfolge zwischen Service-Aufruf und Ausführung stabil. Um die Verarbeitung der Ereignisse zu beschleunigen, kann die Verarbeitung parallelisiert werden. Die Reihenfolge bei diesen Ereignissen ist dann nicht mehr gesichert.
Nur bei der asynchronen Verarbeitung kann eine Reihenfolge der Ereignisse gesteuert werden. Bei der synchronen, direkten Verarbeitung werden einzelne Service-Aufrufe nicht gegenseitig synchronisiert.
Mit diesem Aufruf wird ein Zeitereignis in der Ablage erzeugt. Die Daten können durch den Administrator eingesehen werden.
Jedes Ereignis kann über die Methode C0Event.check()
geprüft werden. Die Prüfung findet auch bei der asynchronen Verarbeitung direkte beim Aufruf des Services statt.
Die Weiterverarbeitungslogik der Ereignisse wird in der Skriptbibliothek synchron unter C0Event.process()
angestoßen.
Es ist darauf zu achten, dass die Prüfung von Ereignissen sehr performant umgesetzt wird. Überschreitet die Prüfung eines Ereignisses eine Zeitspanne von 50ms erfolgt eine Meldung an den Systemadministrator.
Die Methoden der Skriptbibliothek können in der Kundenschicht übersteuert und erweitert werden.
SC0Event
@BpmScript @Released @Override
private Boolean check(String eventType, Map<String, Object> payloadRequest, Map<String, Object> payloadResponse)
{
// ...
return super.check(eventType, payloadRequest, payloadResponse);
}
@BpmScript @Released @Override
private void process(String eventPk, Date eventDate, String eventType, Map<String,Object> payloadRequest, Map<String,Object> payloadResponse)
{
// ...
super.process(eventPk, eventDate, eventType, payloadRequest, payloadResponse);
}
Skripting
Details finden Sie im Skripting-Handbuch
isContainerEnabledForUnits - neue Methode zur Prüfung, ob ein Datensatz bestimmten Mandanten zugeordnet ist
getImageValue - neue Methode zum Speichern eines Fotos im BPM