Release-Notes Versionen 23.1.x
Vorgangsmanagement
Mit dem CURSOR-Vorgangsmanagement-Modul können zahlreiche Prozesse abgebildet werden. Beste Beispiele sind Klärung von kaufmännischen oder technischen Fragen, Beseitigung von Störungen oder Bearbeitung von Beschwerden. Zahlreiche Funktionen zur Delegation, Eskalation und Dokumentation erlauben die zeitnahe Bearbeitung von Serviceanfragen, Anliegen und ermöglichen die einfache Kommunikation mit allen Beteiligten. Die Kommunikation wird über Vorgänge abgebildet, die je nach Prozessablauf beliebig benannt werden können (z.B. "Beschwerde" oder "Anfrage"). Ein Vorgang kann optional mehrere Anliegen umfassen.
Anwendungsfall: Ticketbearbeitung
Bearbeitung (Anlage, Änderung, Delegation, Eskalation) von Serviceanfragen
Integration von Mail- und Portalsystemen
Anwendungsfall: Beschwerdebearbeitung
Bearbeitung (Anlage, Änderung, Delegation, Eskalation) von Beschwerdevorgängen
Zuordnung und Verfolgung untergeordneter Beschwerdeanliegen
Umfangreiche Auswertungsmöglichkeiten zur Ursachenanalyse
Vorgänge können vom unterschiedlichen Typ sein. Diese unterscheiden sich durch den hinterlegten Prozess.
Anliegen bilden die Möglichkeit, mehrere Anliegen in einem Vorgang separat zu bearbeiten.
Aktivitäten dienen dazu, den Kommunikationsablauf genau festzuhalten und somit auf ein gezieltes Ergebnis hinzuarbeiten.
![](../../../__attachments/6947198/image2022-7-10_19-56-7.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Abbildung: Neuanlage über die Aktionsbox im Geschäftspartner
Details finden Sie im Benutzer-Handbuch.
Vergabe von Berechtigungen über die Listenansicht
Die Auswahl einer Rechtevorlage bzw. die Vergabe von Rechten zum aktuellen Datensatz kann auch für die Listenansicht und dort für mehrere markierte Datensätze gemacht werden. Damit können in einer Liste für alle markierten Datensätze mit einer Aktion neue Berechtigungen vergeben werden.
![](../../../__attachments/6947198/image2022-10-10_23-23-45.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Abbildung: Konfiguration der Berechtigungen für mehrere Datensätze
In die folgenden Listenansichten wird der Button zur Verwaltung von Berechtigungen angezeigt:
Einfeldsuche
klassisches Suchergebnis
Unterbereichssuchergebnis
Unterbereich
Der Button ist aktiv, wenn
die Entität "rechtebehaftet" ist (Entitätseigenschaften) und
der Benutzer die Aktionsrechte "Satzrechte bearbeiten" sowie "Satzrechte in Liste bearbeiten" besitzt.
Der Button verhält sich wie folgt:
Dürfen alle markierten Sätze bearbeitet werden, so wird die Rechtebearbeitung geöffnet.
Dürfen nur manche Sätze bearbeitet werden, so wird ein Dialog angezeigt und danach entweder die Rechtebearbeitung geöffnet oder der Vorgang abgebrochen.
Dürfen keine Sätze bearbeitet werden, so wird der Dialog angezeigt und der Vorgang abgebrochen.
Ansonsten werden die gleichen Meldungen wie bei der Mehrfachbearbeitung angezeigt
Status von Terminen und Besprechungen
Termine, die aus dem CRM nach Outlook exportiert oder aus Outlook ins CRM importiert werden, werden von Outlook entkoppelt. Das Mapping wird aufgelöst.
Die wesentlichen Merkmale des Abgleichs:
Wiedervorlage, Termin und Besprechung werden von der Inhaus nach Outlook immer mit dem default-Wert von Outlook synchronisiert.
Termine aus Outlook unter Vorbehalt, beschäftigt (ohne Teilnehmer), gebucht und frei werden von Outlook nach Inhaus als Termine synchronisiert
Termine aus Outlook, die Teilnehmer haben (Besprechungen, werden von Outlook nach Inhaus als Besprechung synchronisiert.
Wiedervorlagen, die im System sind, werden entsprechend wie Termine behandelt.
Der Schlüssel wird "als nicht mehr auswählbar" im Standard markiert.
Neue Wiedervorlagen werden nicht mehr erzeugt.
Redesign der COMMAND-Suche
Mit dem Redesign der COMMAND-Suche kommen Sie in Zukunft noch einfacher und schneller an die Informationen, die Sie brauchen.
![](../../../__attachments/6947198/image2022-10-10_21-31-54.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Verbesserte Usability
Die zentrale, bereichsübergreifende Suche COMMAND hat ein Facelift mit gleichzeitiger Verbesserung der Bedienergonomie erhalten. Mit der intelligenten Suchmethode analog einer Internet-Suchmaschine können Sie global im CRM nach Namen, Stichwörtern oder sonstigen (Teil-)Begriffen suchen. Neben den eigentlichen Suchergebnissen werden Ihnen beispielsweise auch Bereiche, Prozesse oder Favoriten angezeigt.
Individuelle Suchbereiche
Sie können die durchsuchten Bereiche über die Einstellungsmöglichkeit neben dem Suchfeld jederzeit anpassen. Es wird übersichtlich dargestellt, welche Bereiche bereits ausgewählt sind und welche Suchbereiche noch zur Verfügung stehen. Eine Filterfunktion erleichtert die gezielte Auswahl. Auch verknüpfte Bereiche (wie z.B. Verteiler oder Kampagnenphasen von Kampagnen), die nicht über das Hauptmenü erreichbar sind, können über COMMAND durchsucht werden.
Weitere Features
Über COMMAND können Sie nun einfach auf Ihre zuletzt verwendeten Datensätze zugreifen, die Ihnen mit einem Klick ins Suchen-Feld direkt angeboten werden. Profi-Tipp: Genauso können Sie in COMMAND-Shortcuts verwenden, um Datensätze in einzelnen Bereichen zu suchen, ohne über das Menü in die jeweiligen Bereiche einsteigen oder die Suchbereiche anpassen zu müssen.
Wenn Sie mehr darüber erfahren wollen, wie COMMAND Sie in Ihrem Arbeitsalltag unterstützen kann, empfehlen wir die COMMAND Onboarding Touren, die ab der Version 23.1 zur Verfügung stehen.
Neuer Personen-Typ "Eheleute"
Es wurde ein neuer Personentyp EHE (Langtext = "Eheleute", Juristische Person = Nein) aufgenommen.
Hierzu wurden folgenden Anreden wie folgt konfiguriert:
Generierte Briefanrede: Sehr geehrtes Ehepaar <Nachname>
Generierte Anrede: Guten Tag <Vorname><Nachname>
![](../../../__attachments/6947198/image2022-10-10_23-40-28.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Abbildung: Beispiel eines Dokumenten an die Eheleute
Verknüpfung von Aktivitäten beim E-Mail Import
Aufgrund von vorhandenen Vertriebsstrukturen (z.B. Vertrieb an Endkunden über Vertriebspartner) kommt es dazu, dass die gleiche E-Mail-Adresse bei mehreren Geschäfts- bzw. Ansprechpartnern hinterlegt ist (die des jeweiligen Vertriebspartners). Das hat zur Folge, dass beim E-Mail-Import neben dem "richtigen" Geschäfts- und Ansprechpartner, ungewollt weitere Geschäfts- und Ansprechpartner desgleichen Vertriebspartners mit derselben Mailadresse vom System automatisch verknüpft werden.
Es ist nun möglich, bei den betreffenden Kunden ungewollte automatische Verknüpfung zu unterbinden, in dem die Verknüpfungslogik mithilfe eines neuen PropertyMappers geändert wird. Die Änderung des PropertyMapper-Eintrags führt dazu, dass beim Drag&Drop-Mailimport der Geschäfts- bzw. Ansprechpartner verknüpft wird, auf dem die E-Mail fallen gelassen wurde sowie alle weiteren Geschäfts-/Ansprechpartner, die eine eindeutige (= im System nur einmal vorhandene Mailadresse) haben. Weitere Geschäftspartner mit derselben E-Mailadresse werden nicht verknüpft.
Die Logik kann mit folgendem PropertyMapper-Statement aktiviert werden:
insert into propertymapper
(Pk, id, propertyvalue, propertytype, property, principal, active, createdate, createuser, updatedate, updateuser, custlayer)
values
(FNC_NEW_ID('ProMa'), '/de/cursor/jevi/common/activity/GroupwarePreferences$!!$noDuplicateMailCoPeLinks','true', 'SYSTEM', '', '', 1, getdate(), 'admin', getdate(), 'admin', 'CN')
Die Anforderung betrifft nur den Drag&Drop Mailimport, da per Import-Ordner oder Outlook-Addin die Information fehlt, welcher der "richtige" Geschäfts- oder Ansprechpartner ist, mit dem die Mail verknüpft werden soll.
Direkte Ausführung von Nachschlagesuchen bei Klick
Wurde ein (Teil-)Begriff in einem Nachschlagefeld eingegeben und in der Vorschlagsliste auf "Es gibt weitere Vorschläge" bzw. auf die Suchlupe im Nachschlagefeld geklickt, so wird die Suche direkt ausgeführt und die Suchergebnisliste angezeigt.
Datensätze aus Suchergebnislisten in einer neuen Ebene öffnen
Für die normalen Listenansichten und in Unterbereichslisten besteht die Möglichkeit, einzelne Datensätze sowie die gesamte Liste in einer eigenen Ebene (Tab) zu öffnen.
![](../../../__attachments/6947198/image2022-10-10_21-1-11.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Abbildung: Datensatz aus der Listenansicht in einer neuen Ebene öffnen
Geoanalyse: Anzeige von großen Marker-Mengen
Der Anwender kann nun den Smart-Meter-Rollout für sein Netzgebiet mit der Geoanalyse operativ planen. Dabei ist entsprechend nur der Kartenausschnitt des eigenen Netzgebietes interessant. Die Zoomstufe ist während der Operationen auf der Karte immer entsprechend nah gewählt. Über die geographische/geometrische Suche via über einen Straßenzug/Häuserblock gezeichnetes Polygon kann eine Markermenge mit sehr hoher Dichte geladen werden. Diese wird nach bestimmten Kriterien gefiltert (Smart Meter ausgerollt ja/nein) und anschließend via erneuter Selektion an einen Prozess weitergegeben oder in einer CRM-Listenansicht geöffnet. Detaillierte Attributinformationen sind in dieser Ansicht aufgrund der hohen Markerdichte nicht nützlich und werden ausgeblendet.
![](../../../__attachments/6947198/image2020-12-30_9-58-27.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Abbildung: Geoanalyse mit hoher Marker-Dichte
Der initiale Zoom der Geoanalyse ist per PropertyMapper-Eintrag fest konfigurierbar. Dieser gilt, wenn die Geoanalyse ohne zuvor gewählte Einträge in der Suchergebnisliste gestartet wurde. Wird die Geoanalyse mit selektierten Daten durchgeführt, wird der Zoomlevel wie gehabt auf eine passende Größe skaliert. Mögliche Werte: 0 (ganze Welt) bis 18 (Straßenebene)
INSERT INTO PropertyMapper( Pk, id, property, propertyValue, propertyType, principal, isCustomizing, Active, CreateDate, CreateUser, UpdateDate, UpdateUser, Status, WFInstanceId, RightPk, ClientNo, MassData, OfflineData, CustLayer)
VALUES ('GeoanalysisInitialZoom', '/GeoanalysisSettings$!!$initialZoom', '', '6', 'SYSTEM', '', '0', '1', getDate(), 'TECH_USER', getDate(), 'TECH_USER', null, '#EMPTY-KEY#', null, null, '0', '0', 'CN');
Der Standort-Zoom ist ebenfalls per PropertyMapper-Eintrag fest konfigurierbar. Dieser wird bei Verwendung der Funktion "Zum aktuellen Standort zoomen" genutzt. Mögliche Werte: 0 (ganze Welt) bis 18 (Straßenebene)
INSERT INTO PropertyMapper( Pk, id, property, propertyValue, propertyType, principal, isCustomizing, Active, CreateDate, CreateUser, UpdateDate, UpdateUser, Status, WFInstanceId, RightPk, ClientNo, MassData, OfflineData, CustLayer)
VALUES ('GeoanalysisCurrentLocationZoom', '/GeoanalysisSettings$!!$currentLocationZoom', '', '15', 'SYSTEM', '', '0', '1', getDate(), 'TECH_USER', getDate(), 'TECH_USER', null, '#EMPTY-KEY#', null, null, '0', '0', 'CN');
Des Weiteren kann die Größe der Schritte beim Verkleinern/Vergrößern des Radius für die Umkreissuche per PropertyMapper-Eintrag gesetzt werden. Die Angabe erfolgt in km. Standard ist hier 50km.
INSERT INTO PropertyMapper( Pk, id, property, propertyValue, propertyType, principal, isCustomizing, Active, CreateDate, CreateUser, UpdateDate, UpdateUser, Status, WFInstanceId, RightPk, ClientNo, MassData, OfflineData, CustLayer)
VALUES ('GeoanalysisCircumSearchStepWidth', '/GeoanalysisSettings$!!$circumSearchStepWidth', '', '50', 'SYSTEM', '', '0', '1', getDate(), 'TECH_USER', getDate(), 'TECH_USER', null, '#EMPTY-KEY#', null, null, '0', '0', 'CN');
Die Statements sind jeweils in MSSQL-Syntax angegeben. Für Oracle-Datenbanken muss getDate()
mit sysdate
ersetzt werden.
Infoboards
Automatisches Aktualisieren bestimmter Kacheln
Bei bestimmten Kacheln auf Desktop-Boards, die aktuelle Informationen beinhalten, werden aktuelle Informationen angezeigt, indem diese in regelmäßigen Abständen neu geladen werden.
Bei einem Wechsel auf das Desktop-Infoboard (Tab: "Mein Cockpit") werden bestimmte (nicht interaktive) Kacheln neu geladen werden:
Suchen
Streamline
Scores
Offene Aufgaben
Offene Termine
Benachrichtigungsmenü
Die Option "Automatisch aktualisieren gemäß Board-Aktualisierungs-Interval" wurde überarbeitet:
Ob eine Kachel bei einem Tabwechsel auf das Desktop-Infoboard neu geladen wird, wird zukünftig über diese Option geregelt:
Ist die Option aktiv, so wird die Kachel bei jedem Tabwechsel auf das Desktop-Infoboard neu geladen und gemäß dem in den Systemeinstellungen vorgegebenen Zeitintervall (Option: Aktualisierungsintervall Desktop-Diagramme).
Ist die Option nicht aktiv, so wird die Kachel weder beim Tabwechsel auf das Desktop-Infoboard noch gemäß dem in den Systemeinstellungen vorgegebenen Zeitintervall neu geladen.
Neues Wording:
Text neben der Checkbox. "Automatisch aktualisieren"
Tooltip beim Drüberhovern über das Fragezeichen: "Wenn diese Option aktiviert ist, wird der Kachelinhalt auf Infoboards gemäß der Systemeinstellung "Aktualisierungsintervall Desktop-Diagramme (Sek.)" festgelegten Intervall neu geladen. Zusätzlich dazu wird bei aktivierter Option die Kachel neu geladen, sobald man von einem anderen Tab in das Desktop-Infoboard wechselt. Nicht empfohlen für interaktive Kacheln, da Nutzereingaben bei der Aktualisierung verloren gehen."
Die Systemeinstellung "Aktualisierungsintervall Desktop-Diagramme (Sek.)" wird treffender beschrieben:
Neuer Text: "Aktualisierungsintervall für Desktop-Kacheln und -Diagramme (Sek.)"
Neuer Tooltip: "Stellt das Aktualisierungsintervall für Desktop-Diagramme und Desktop-Kacheln in Sekunden ein. Für Kacheln greift diese Einstellung nur, wenn die Aktualisierung innerhalb der Kachelverwaltung (in der Administrationskonsole) aktiviert wurde. Achtung: Ein hohes Aktualisierungsintervall kann performante Auswirkungen haben."
Dokumentenvorschau beim Aufruf des Dokuments direkt anzeigen
Um eine Verbesserung der Ergonomie zu ermöglichen, wird direkt die Dokumentenvorschau im rechten Bildschirm-Teil sehe anstatt der Details angezeigt.
Die Reihenfolge der Tabs:
Erst kommt "Schnellvorschau", dann "Detailvorschau" und zuletzt "Übersicht".Die Persistenz der Tabs wurde aufgehoben
Es soll immer zu erst die Schnellvorschau angezeigt werden. Existiert keine Schnellvorschau, wird die Detailvorschau angezeigt. Sollte keine Detailvorschau existieren, wird die Übersicht angezeigt.
Wird ein anderes Dokument ausgewählt, wird derselbe Prozess von vorne durchlaufen (immer von links nach rechts).Ist keine Schnellvorschau vorhanden, ist dieser Tab ausgegraut und nicht mehr anklickbar.
Umbenennung der Kacheln im Zuge der Einführung des Vorgangmanagements
In den Kacheln Ansprechpartnerporträt bzw. Geschäftspartnerporträt werden mit der fünften Zeile Tickets abgebildet, die für den entsprechenden Ansprech- oder Geschäftspartner relevant sind.
Ab der Version 2023.1 wird das Vorgangsmanagement in den Standard implementiert und zukünftig werden die früher genannten Tickets zu Vorgängen umbenannt. Im Rahmen einer konsistenten Bezeichnung über das ganze CRM hinweg wurden in der Kachel die "Tickets" in "Vorgänge" umbenannt. Dies wurde auch in der Kachelkonfiguration berücksichtigt.
![](../../../__attachments/6947198/implementierung.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Abbildung: Kachel mit Vorgängen
Kalender-Kachel: Filterung der nicht zugewiesenen Ereignisse
Sind beispielsweise zum Jahresbeginn sehr viele nicht zugewiesene Ereignisse in der Kalender-Kachel vorhanden, kann der Bereich schnell unübersichtlich werden. Der Disponent hat die Möglichkeit, im Bereich der nicht zugewiesenen Ereignisse filtern zu können.
Verfügbare Filter:
Filterung nach Schlüsselfeldern
Filterung nach Textfeldern
![](../../../__attachments/6947198/Ressourcenkalender%20Ereignisse%20filtern.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Abbildung: Kalender-Kachel
Karten im Card-Layout maximieren
Durch die Einschränkungen, die das Card-Layout mit sich bringt (ein definiertes Layout für alle Inhalte auf einer Maske), können keine Inhalte mehr groß- bzw. vollflächig dargestellt werden. Dies trifft insbesondere auf Infoboards (z.B. Gantt-Chart und Kanban) sowie auf Webviews zu. Die Informationen werden aktuell in einer benutzerunfreundlichen Art dargestellt und können, je nach Definition des Layouts, nicht genutzt werden.
Aus diesem Grund gibt es eine Möglichkeit, die Komponente 'Card' im Card-Layout vollflächig darstellen zu können. Es kann zwischen Maximieren/Verkleinern geswitcht werden.
![](../../../__attachments/6947198/image2022-10-31_1-13-21.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Abbildung: Maximierte Kachel
Überarbeitung der Suchen von Standardboards
Die 3 Boards wurden wie folgt angepasst:
das Standard- und Vertriebsboard enthalten in der Scores-Kachel eine weitere Suche: "Meine Vorgänge" (C0IB_MyTickets)
das Supportboard wurde so überarbeitet, dass mehr Suchen für Vorgänge eingebaut werden.
Standardboard (C0DesktopDefaultBoard)
![](../../../__attachments/6947198/image-20230814-173853.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Vertriebsboard (C0DesktopSalesBoard)
![](../../../__attachments/6947198/screenshot-2.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Supportboard (C0DesktopSupportBoard)
![](../../../__attachments/6947198/screenshot-3.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Import von E-Mails aus einem mehrstufigen Importverzeichnis mit EWS
Der Import von E-Mails aus einem im Importverzeichnis angegebenen Ordner, der unter Unterordnern im Posteingang angelegt ist, ist jetzt möglich.
Vorgehensweise:
In den Systemeinstellungen/Aktivitäten/Ordnername für Aktivitätenabgleich oder in der MailConfig den Import Ordner eintragen. Es können mehrere Unterordner angegeben werden. Beispiel, oder z.B. "Import Ordner\Kunden\Kunde1". Die einzelnen Ordner werden mit \ oder / getrennt.
Mails werden aus diesem Ordner (und Ordner der ersten Ebene) importiert.
Masken-Editor
Zustand von 'Collapsibles' sitzungsübergreifend merken
Zustand der collpasiblen Karten-Komponenten auf einer Entität wird nun persistiert. Wenn man die Maske verlässt und dann wieder auf eine Maske dieser Entität navigiert, ist der Zustand so, wie man die Maske verlassen hat.
Collapsibles können über den Editor per default zugeklappt angezeigt werden. Ansonsten sind sie immer auf der Maske geöffnet.
Mehrzeilige Texte und Hinweis-Boxen für Flex-Masken
Es können auch mehrzeilige Texte zu Flex-Masken hinzugefügt werden. In Labels gibt es nun eine zusätzliche Option "Text umbrechen". Text bricht dann automatisch um, wenn er zu lang ist (außer es sind keine Leerzeichen vorhanden) und es können neue Zeilen im Textfeld angegeben werden.
![](../../../__attachments/6947198/image2022-10-30_19-56-1.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Abbildung: Neue Option "Text umbrechen"
Maximalbreite für Spalten
Maskendesigner kann nun eine Maximalbreite für Spalten festlegen.
![](../../../__attachments/6947198/image2022-10-30_20-39-9.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Standardbreite
Maximalbreite - Innerhalb dieses Bereiches skaliert die Spalte analog ihrer Flex-Breite.
Wenn alle Spalten eine Maximalbreite besitzen und das Fenster größer als die Summe dieser wird, wird Whitespace generiert und das Layout darin zentriert. Die Spalten sind dabei zentriert und das White-Space gleichmäßig darum verteilt.
Wenn alle Spalten eine Standardbreite besitzen und das Fenster kleiner als die Summe dieser wird, so werden die Spalten umgebrochen (Flex-Wrap)
Sprechende Namen für Feldgruppen der Felder aus der Datenbank (angelehnt an internen Namen)
Für bessere Identifikation erhalten zu einem Feld zugehörige Feldgruppen einen sprechenden Namen.
Beispiel: Der interne Name wird zufällig generiert, z.B. "fg10". Sprechender Name: fg_Feldname, fg_AcademicTitle.Employee.
Mindestbreite-Eigenschaft wird entfernt
Mindestbreite (min-width), Standardbreite (flex-basis) werden zu Breite (flex-basis)
Labels, Buttons und Felder bekommen nur einen Wert für die Breite. Dieser wird in Pixel angegeben und ist standardmäßig weiterhin 120px. Über "Horizontal auffüllen" kann die Breite darüber hinaus erweitert bzw. maximiert werden.
Für bestehende Masken, in welchen der Wert "Mindestbreite" (min-width) gesetzt ist wird dieser beim Laden der Maske in den Editor entfernt.
Anmerkung: Die Eigenschaft "Mindestbreite" war nur sichtbar, wenn "Horizontal auffüllen" nicht gesetzt war. Ein Feld wird nie kleiner als der bei Standardbreite angegebene Wert. Der Wert "Mindestbreite" war für den Fall gedacht, dass die Standardbreite in % angegeben wird, was in der Praxis aber eigentlich niemand machte.
Label zu einem Feld generieren
Maskendesigner kann nun das zugehörige Label zu einem auf der Maske platzierten und vorher markierten Feld generieren lassen. Es wird dabei innerhalb derselben Feldgruppe vor dem entsprechenden Feld platziert. Das Label wird nur dann generiert, wenn das Feld, für das es generiert werden soll, nicht bereits das zugehörige Label im Editor besitzt.
Beim Drücken des Buttons wird geprüft wird, ob genau ein Feld ausgewählt ist. Sind mehrere Felder gleichzeitig platziert, wird eine Hinweismeldung angezeigt, dass die Funktion nur verfügbar ist, wenn genau ein Feld ausgewählt ist.
Ablageort beim Öffnen unterschiedlicher Typen von CRM-Dokumenten
Die Struktur der Speicherorte wurde erweitert. Unterschieden wird nun zwischen generierten und importierten Dokumenten.
Die generierten Dokumente sind vertrauenswürdig und werden im Unterverzeichnis internal
abgelegt.
Importierte Dokumente, wie z.B. durch einen Anwender per Drag and Drop hinzugefügt, können möglicherweise sicherheitskritisch sein und werden daher im Unterverzeichnis external
abgelegt.
Möchte man sich diese neue Unterscheidung zu nutze machen und importierte (externen) Dokumente als nicht vertrauenswürdige Quelle einstufen, so ist der vertrauenswürdige Speicherort auf das internal-Unterverzeichnis zu beschränken.
Ohne Änderung des vertrauenswürdigen Speicherortes ist das Verhalten identisch zu vorher. Es werden sowohl generierte als auch importierte Dokumente weiterhin als vertrauenswürdig eingestuft.
Modulverwaltung
Aufsplitten eines Hauptpartner-Moduls in ein Standard-Modul und ein Hauptpartner-Modul
Es gibt nun einen Schalter in der Modulverwaltung, der alle Konfigurationen, für die ein Hauptpartner-Modul notwendig ist, aus dem bestehenden Hauptpartner-Modul extrahiert und in ein neues Modul schreibt. Danach wird auf dem bestehenden Hauptpartner-Modul das Flag entfernt und in das neu erstellte, extrahierte Modul geschrieben, das dann als Hauptpartner-Modul gekennzeichnet wird.
Das extrahierte Hauptpartner-Modul ist dann von dem ehemaligen Hauptpartner-Modul abhängig.
Die Moduldaten werden bei der Aufteilung angegeben werden, da nur ein Hauptpartner-Modul in einem System vorhanden sein kann.
Beim Import eines Hauptpartnermoduls wird geprüft, ob das Hauptpartnermodul Abhängigkeiten zu einem bestehenden Modul desselben Partners hat und ob dieses Modul eine aktive Lizenz hat. Wenn ja, dann wird das Hauptpartnermodul auch direkt aktiviert, wenn nein, so muss wie bisher separat eine Lizenz eingespielt werden.
![](../../../__attachments/6947198/image2022-8-12_15-51-43.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Abbildung: Modul-Aufsplittung in der Admin-Konsole
Prüfungen beim Veröffentlichen von Modulen
Beim Veröffentlichen von Modulen finden nun folgende Prüfungen statt:
ob alle modulabhängigen Prozesse veröffentlicht sind
ob alle modulabhängigen Skripte veröffentlicht sind/unveröffentlichte Skriptentwürfe existieren
ob alle enthaltenen Reports fehlerfrei kompilierbar sind
![image-2022-04-21-12-10-32-404.png](https://jira.cursor.de/secure/attachment/90020/image-2022-04-21-12-10-32-404.png)
Beim Export des Moduls passieren dieselben Prüfungen sicherheitshalber noch einmal (analog zum Customizing-Transport).
![](../../../__attachments/6947198/image-2022-04-21-12-18-06-829.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
I18n-Import von Modulen nur in einem Wartungsfenster erlauben
Der Start des I18n-Imports von Modulen prüft zu Beginn, ob noch weitere Benutzer im System sind.
wenn ja, wird ein Hinweis ausgegeben, dass der Import nur im Rahmen einer Wartung erfolgen darf
wenn nein, wird geprüft, ob bereits ein Wartungsfenster vorhanden ist
wenn ja, wird der Anwender gefragt, ob er den Import starten möchte
wenn ja, wird der Import gestartet
wenn nein, wird der Import abgebrochen
wenn nein, wird der Anwender gefragt, ob er den Import im Rahmen einer Wartung durchführen möchte
wenn ja, wird direkt ein Wartungsfenster erstellt und der Import gestartet
wenn nein, wird der Import abgebrochen
Exportfunktion für Icons des Icon-Repositories
In der Verwaltung der Bilder wurde ein neuer Schalter "Bilder exportieren" eingefügt. Dieser exportiert alle Bilder in der Bibliothek, unter Berücksichtigung der Filter.
Die Bilder werden in einer Ordnerstruktur abgelegt nach dem folgenden Schema:
<Selektiertes Verzeichnis>\ImagesExport\<ENTITY_IMAGE/USER_IMAGE>\<C0/C1/C2>\<width>x<height>\<Bildname>.<Bildendung>
![](../../../__attachments/6947198/GUI.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Abbildung: Bilder exportieren
E-Mail-Konfigurationen mit einem Kommentarfeld
Ein auf den E-Mail-Konfigurationen verfügbares Memotext-Feld ermöglicht die Hinterlegung von Informationen über die E-Mail-Konfiguration, sodass Administratoren schnell erkennen können, wo und warum diese E-Mail-Konfiguration in Verwendung ist.
Anmeldung an den REST und SOAP Services via Datenbank-Passwort-Hash wurde entfernt
Die Option, sich an Web-Schnittstellen mit dem Passwort-Hash eines Benutzers anzumelden, wurde entfernt. Die Anmeldung an Web-Schnittstellen (REST, SOAP, weitere interne Schnittstellen) kann nur noch mit dem Klartext-Passwort erfolgen.
Bei Anmeldeproblemen von Schnittstellen nach dem Update ist zu prüfen, ob das Passwort korrekt im Plaintext übergeben wird.
Hashing-Methode für den Datenbank-Login wurde umgestellt
Der Restservice Endpoint rest/api/session/v1/session wurde um den optionalen Parameter sessionTokenOnly erweitert. Dieser bestimmt, ob nur das Token oder ein SessionDTO zurückgeliefert wird.
Rest-Dokumentation:
https://server.domain:port/rest/private/doc/v1/services/session
https://server.domain:port/rest/private/doc/v1/types/de.cursor.rest.api.session.SessionDTO
Beispiel Powershell:
$TokenUrl = "https://server.domain:port/rest/api/session/v1/session?loginType=WEBSERVICE&sessionTokenOnly=true"
$SecurePassword = ConvertTo-SecureString -String "password" -AsPlainText -Force
$Cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList "userName", $SecurePassword
$Token = Invoke-RestMethod -Method GET -Uri $TokenUrl -Credential $Cred
$SecureToken = ConvertTo-SecureString -String $Token -AsPlainText -Force
$TokenCred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $Token, $SecureToken
# Rest calls
...
Invoke-RestMethod -Method DELETE -Uri $TokenUrl -Credential $TokenCred
Auflösen von Standardschlüsseln in der REST-API/Infoboard
Das Auflösen von Standardschlüsseln und kundenseiteigen Übersteuerungen kann in der REST-API/Infoboard automatisch erfolgen.
Das Mapping von Schlüsseln muss nicht explizit forciert werden, sondern innerhalb der REST-Schnittstelle werden die Auflösungen von kundenseitigem Schlüssel-Pks automatisch aufgelöst.
Auflösen des LookupVOs in RestAPI:
de.cursor.jevi.common.rest.WorkSpaceConverter.resolveLookupVO(RestLookupVO, AttributeName, AttributeProperty)
Dort wird versucht, den PropertyMapper für das PK-Mapping auszulesen
String id = "Key$!!$" + keyRange;
String property = restLookupVO.getPk();
String pk = readPropertyMapper(id, property, [defaultValue] restLookupVO.getPk())
lookupVO = this.context.lookup(pk, attributeProperty.getAttributeNameAsString(), true);
Umstellung von Beschreibungsfeldern für Nachschlagefelder für ausgewählte Lookup-Suchen
Über die Systemeinstellung der Feldeigenschaften kann für Nachschlagefelder die Beschreibung so konfiguriert werden, so dass nur die gewählten Felder in der Beschreibung angezeigt werden. Die Standardschicht (C0) kann dann vom Systembetreiber in der Kundenschicht (C2) übersteuert werden.
![](../../../__attachments/6947198/image2022-7-20_13-7-7.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Abbildung: Konfiguration des Beschreibungsfeldes
Mitarbeiterabgleich in einem Mehrmandantensystem
Der Hauptmandant eines Mitarbeiters wird nun nicht mehr nur transportiert, sondern bei Änderungen auch aktualisiert. Gleiches gilt für die Mandantenzuordnung im Unterbereich und die Mandantenverwaltung in der Toolbar.
![](../../../__attachments/6947198/MandAbgleich.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Abbildung: Mandantenzuordnung im Mitarbeiter
Systembetreiber-Abgleich für das Mandantenmanagement
Das Feld "Systembetreiber" im Mandanten kann, wenn der Mitarbeiterabgleich aktiv ist, nur noch in der Produktion gepflegt werden. Dafür wird der Eintrag und auch der dahinter liegende Geschäftspartner automatisch vom Mitarbeiterabgleich in die anderen Systeme transportiert.
![](../../../__attachments/6947198/image-2022-03-04-08-48-18-048.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Die transportierten Daten werden durch die Suche "C0SYSTEM_OWNERS_TO_MERGE" bestimmt.
![](../../../__attachments/6947198/image-2022-03-04-08-51-59-083.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Felder 'Adressart' und 'Ortsteil' beim Geschäftspartner
In der 3C-Evi-Entwicklung wurden die SC12RoleModelUtils
aufgenommen, um Änderungen an einem Geschäftspartner zu erkennen, auch wenn dies in delegierten Feldern geschieht.
Es wurden die Delegationen AddressType.Customer
(Adressart) und District.Customer
(Ortsteil) aufgenommen. Für PeDistrict.Customer
wird die Internationalisierung "Ortsteil der Person" genutzt.
Löschregeln im Benutzerkontext
Die Löschregel wird nun im Kontext eines Benutzerausgeführt, somit dessen Mandanten und Gruppen-Rechte auf die Daten, angewendet. Voraussetzung für Customizing in Kundensystemen: Mitarbeiterabgleich ist aktiviert oder ein technischer Mitarbeiter verfügt über ausreichende Rechte.
Löschregeln der Standardschicht (C0) und Kunden-Schicht (C1) werden immer im Kontext von TECH_USER ausgeführt.
![](../../../__attachments/6947198/image-20230814-174102.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Einer neuen Löschregel muss ein Benutzer zugewiesen werden.
![](../../../__attachments/6947198/image-20230814-174116.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Der Benutzer kann nachträglich verändert werden (unter Beachtung der Schicht)
Beim Prüfen der Datensatzanzahl für eine Löschregel im anderen Benutzerkontext wird eine gesonderte Meldung ausgegeben.
![](../../../__attachments/6947198/image-20230814-174152.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Beim Aktivieren der Datensatzanzahl für eine Löschregel eines im anderen Benutzerkontext wird eine gesonderte Meldung ausgegeben.
![](../../../__attachments/6947198/image-20230814-174206.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Um die Daten mit Rechten des angegeben Benutzer testen zu können, kann die Stellvertretung zu diesem Benutzer genutzt werden. Dies ist z.B. für technische Benutzer notwendig, da dort keine Anmeldung am Client möglich ist.
Länge für Produktbezeichnung
Text-Länge für Produktbezeichnung auf Produkten (PrdName.Product) und Angebotstexten (ProdDescName.ProdDesc) wurde von 50 auf 100 Zeichen erweitert.
Nutzung des Parameters "RETENTION NONE" für LOB-Felder unter ORACLE für neue Datenbanken
Beim Speichern von CLOB-Daten durch die Schnittstelle konnte es zum Fehler kommen, da die Felder den einmal genutzten Speicherplatz nicht mehr frei gaben. Als Lösung wurde ein Skript aufgenommen, das für die Felder der Tabellen 'INTERFACEDETAIL', 'INTERFACEOVER', 'C12EVENTRES' diese Tabellen neu aufbaut und hierbei die aktuellen SecureDatafiles von ORACLE nutzt (diese sind seit Oracle 12.1 Standard) und so den Parameter "RETENTION NONE" nutzen kann.
Für neue Datenbanken wird nun für ORACLE der Parameter "RETENTION NONE" im Falle von LOB Feldern immer gesetzt.
Standard-Ausgabeformate bei Neuanlage von Dokumentvorlagen
Bei Neuanlage von Dokumentvorlagen vom Typ Einzelbriefe, Angebote oder Verträge wird als Standard-Ausgabeformat DOCM verwendet.
Bei Neuanlage von Dokumentvorlagen vom Typ Serienbriefe und Massendaten wird als Standard-Ausgabeformat PDF verwendet.
Bei der Neuanlage einer Excelvorlage wird als Ausgabeformat immer XLSM (anstelle XLS) als Standard vorgeschlagen, da im Regelfall Makros verwendet werden. Der Administrator der Vorlage kann das Ausgabeformat weiterhin ändern.
Detaillierte Informationen zur Excelvorlagen
Änderungen im Bereich des Ausgabeformats von nativen Excelvorlagen (in COM basierten Excelvorlagen steht das Ausgabeformat nicht zur Verfügung):
Makrobehaftete Ausgabeformate xlsm, xlsb, xls
Vor dem Speichern wird geprüft, ob das VBA-Modul NATIVE in der Excelvorlage vorhanden ist. Dies ist für die Ausführung der nativen Excelvorlage notwendig. Das Speichern ohne VBA-Modul NATIVE ist nicht mehr möglich.Ausgabeformat xlsx
Neben xlsm, xlsb und xls steht nun zusätzlich auch das Ausgabeformat xlsx zur Verfügung. Dieses Ausgabeformat hat zur Folge, dass die generierte Exceldatei keine Makros mehr beinhaltet und folglich als vertrauenswürdig eingestuft wird.
Bei Verwendung des Ausgabeformats xlsx wird vor dem Speichern der Vorlage geprüft, ob Makros in der Excelvorlage vorhanden sind. Ist dies der Fall, so erscheint eine Hinweismeldung, um den Administrator darauf hinzuweisen, dass vorhandene Makros nicht mehr ausgeführt werden. Somit sollte eine versehentliche Verwendung des Ausgabeformats xlsx vermieden werden.Bei der Prüfung auf potentiell ausführbare Makros werden folgende Eigenschaften geprüft
In der CONFIG-Lasche der Excel-Vorlage ist der Konfigurationsparameter 'Starte Makro' (Zellname: CONF_MACRO_RUN) aktiviert (Eintrag"Ja")
Im VBA-Projekt der Excelvorlage (ALT+F11) sind Makroprozeduren (Sub ... End Sub oder Function ... End Function) hinterlegt.
Diese Prozeduren können einem Arbeitsblatt oder einem Modul zugeordnet sein.Nach Deaktivieren des Konfigurationsparameters und dem Entfernen aller Makros erscheint die Hinweismeldung nicht mehr.
Web Client
Schlüssel in nicht lizenzierten Modulen
Schlüssel, die einem Modul zugewiesen sind, für welches keine gültige Lizenz vorliegt, werden in der Schlüsselbearbeitung durchgestrichen angezeigt. Die Schlüssel sind nicht bearbeitbar und können in der Anwendung nicht ausgewählt werden.
![](../../../__attachments/6947198/CRM-17793_KeyModulVisibility.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Abbildung: Schlüssel in nicht lizenzierten Modulen
Entitäten
Alle Entitäten, die im Windows Client verfügbar sind, sind auch im Web Client vorhanden und voll funktional.
Angebotserstellung: Möglichkeiten für die Gliederungsebenen
Zum Bearbeiten der Gliederungsebenen stehen in der Listenansicht im Web Client Funktions-Icons zur Verfügung:
Gliederungsebene hoch
Gliederungsebene gleich
Gliederungsebene tief
Gliederungsebene entfernen
alle Gliederungsebenen entfernen
![](../../../__attachments/6947198/image2022-7-20_13-49-32.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Abbildung: Buttons in der Listenansicht bei der Angebotserstellung
Vorbelegung des Feldes "Anlass" innerhalb der Aktivitätenerstellung in der Dokumentengenerierung
Im Standard wird bei der Dokumentengenerierung für Angebote der Schlüssel Angebot im Feld "Anlass" für die Protokoll- und Erinnerungsaktivität verwendet. Dies gilt nur, wenn im System noch keine Anpassung der Vorbelegung des Anlasses über die Anwendungsvariable stattgefunden hat.
![](../../../__attachments/6947198/image2022-10-30_21-52-0.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Abbildung: Schlüssel 'Angebot' im Wizard
CURSOR-App
Löschen von Datensätzen
Es wurde ermöglicht, dass Datensätze über die App gelöscht werden können. Dies ist sowohl in der Detailansicht eines Datensatzes über das Drei-Punkte Menü unten rechts möglich, als auch in der Listenansicht. Hier wird nach einem Long-Touch auf einem Datensatz unten rechts das gleiche Drei-Punkte Menü angezeigt und es erscheint die Aktion "Löschen" mit anschließender Sicherheitsabfrage.
Hier werden die allgemeinen Berechtigungen geprüft. Sobald ein Datensatz (bzw. Bereich) zur Bearbeitung freigeschaltet (dies kann auch nur ein Feld sein) worden ist, wird auch die Aktion "Löschen" angeboten.
![](../../../__attachments/6947198/Loeschen_app_2.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Löschen in der Detailansicht
![](../../../__attachments/6947198/Loeschen_app_3.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Löschen in der Listenansicht über einen long touch auf einen Datensatz
![](../../../__attachments/6947198/Loeschen_app_1.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Sicherheitsabfrage beim Löschen
Beschreibung in der Kampagnenphase
Die Beschreibung wurde so geändert, dass die Kachel "Kommentare & Aktivitäten" und nicht "Streamline" heißt.
![](../../../__attachments/6947198/Neu.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Abbildung: Umbenannte Kachel in der Kampagnenphase
Automatisches Aktualisieren der Kacheln
In der App werden bestimmte Desktop-Kacheln automatisch neu geladen, sobald diese sichtbar für den Nutzer sind. Es gilt sowohl für Android- als auch Apple-Geräte.
Der Automatismus gilt für folgende Kacheln:
Suchen
Streamline
Scores
Offene Aufgaben
Offene Termine
Benachrichtigungsmenü
Anpassung der Masken ans Card-Layout
Die App-Masken wurden nun auch im Cardlayout-Design überarbeitet.
CURSOR-BPM
Mandantenwechsel in BPM-Prozessen
In einem Mehrmandantensystem können Anwender, denen mehreren Mandanten zugeordnet sind, regelmäßig Mandantenwechsel per Mandantenswitch vornehmen.
Dabei ist jetzt sichergestellt, dass:
alle Prozesse korrekt funktionieren
die Prozesse im erwarteten Mandantenkontext laufen
die Daten, die aus diesen Prozessen resultieren die korrekte/erwartete Mandantenzuordnung besitzen
Voraussetzung: Das Mandaten-Modul muss aktiviert sein.
Ein Prozess wird immer mit dem Mandant der aktuellen Session gestartet. Jede Benutzeraktion oder Wartezustand in der laufenden Instanz kann nur nur in einer Session mit demselben Mandaten weitergeführt werden. Benutzeraktionen oder Gruppenaktionen kennen den Start-Mandanten der Prozess-Instanz. Vor dem Öffnen, Editieren oder Weiterführen der Benutzeraktion erfolgt eine Prüfung auf den aktuellen Mandant der Session.
Call-Center-Modus
Im Call-Center-Modus kann der Anwender seinen Mandanten jederzeit wechseln, daher ist die Prüfung an allen relevanten Stellen so wichtig.
![](../../../__attachments/6947198/CRM17929_SwitchUnit.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Ungültige Mandanten-Zuordnung
Die ungültige Mandanten-Zuordnung wird im Benachrichtigungsmenü über das entsprechende Icon (UnitInwalid) angezeigt. Kann der Anwender vor dem Öffnen den Mandaten auf den Start-Mandanten des Prozesses wechseln, so wird dies im Dialog angezeigt. Falls aber ein Wechsel nicht möglich ist oder der Anwender dem Start-Mandaten gar nicht zugeordnet ist, so wird die weitere Verarbeitung verwehrt.
![](../../../__attachments/6947198/CRM17929_UnitInvalid.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Exklusiv-Modus
Falls der im Prozess zugewiesene Anwender einer Benutzeraktion nicht über den Start-Mandanten verfügt und dabei noch im Exklusiven-Modus arbeitet, wird er auf die Benutzeraktion nie zugreifen können. Diese Prozess-Instanz steht somit im einem ungültigen Zustand. Der betroffene Anwender wird in diesem Fall über eine Systembenachrichtigung informiert und kann sich an den Administrator wenden.
![](../../../__attachments/6947198/CRM17929_UnitInvalidExclusiv.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Im Gegensatz zu Benutzeraktionen kann bei Wartezuständen wie eingehenden Nachrichtenereignissen per Webservice oder E-Mail-Import der Mandant nur implizit auf den Start-Mandanten des Prozesses gewechselt werden. Ist dies wegen fehlender Zuordnung nicht möglich, schlägt der Aufruf bzw. die Verarbeitung des Imports im Prozess fehl.
Pflege von Timern unabhängig vom Prozessnamen
Bisher galt es für Prozesse: Timername = Prozessname. So musste man man für jeden dieser Timeraufrufe auch einen BPM-Prozess anlegen. Mehrere Timer mit unterschiedlichen Parametern aber dem selben Prozessnamen waren nicht möglich, das dann auch die Timer alle den selben Namen hätten. Statt passend zu nur einer parametrierten Scriptmethode auch nur einen parametrierten BPM-Prozess anzulegen, musste man je Timer einen BPM-Prozess erstellen.
Man kann nun den Namen des Timers unabhängig vom Prozessnamen pflegen. Somit können mehrere Timer mit unterschiedlichen an denselben BPM-Prozess übergebenen Parametern angelegt und mit unabhängigem Zeitplan aufgerufen werden. Statt für jeden Timer einen separaten Prozess anzulegen, existiert nur noch genau ein BPM-Prozess, der wiederum die benötigte Skriptbibliotheksmethode aufruft.
Es wird die ID genutzt
ID wird bei Neuanlage der Aktion gepflegt
Feld ist bei Neuanlage der Aktion schreibbar
es ist ein eindeutiges Pflichtfeld, keine Leerzeichen erlaubt
In verschiedenen Schichten wird das entsprechende Präfix berücksichtigt
![](../../../__attachments/6947198/Aktionen%20ausf%C3%BChren.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Anpassung GUI "Aktionen ausführen":
Änderung der Reihenfolge der Felder in Tab "Aktion": ID, Name, Typ
Name bleibt Angabe für Prozessname/Skriptklasse
Name muss nicht mehr eindeutig sein
Aktionsliste und Zeitplan - die ID statt Name
![](../../../__attachments/6947198/Id%20ist%20initial%20schreibbar.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Fortschrittsanzeige im BPM-Prozess
Die Fortschrittsanzeige bei BPM-Prozessen passt sich dynamisch (bis maximal 40 Zeichen) an die Breite des Inhalts an.
Entität zum Zwischenspeichern von Daten
Mit der Entität Zwischenspeicher wurde eine generischen Möglichkeit geschaffen, Daten temporär zu speichern, deren Ermittlung zeit- und / oder rechenintensiv ist, um diese Daten später zu verwenden (z.B. für Kacheln, Skripten). Daten werden mit einer Möglichkeit versehen, zeitlich begrenzt gültig zu sein.
Das Zwischenspeichern ist auch aus Datenbankskripten heraus möglich.
Techn. Feldname | Fachl. Feldname | Datentyp | Beschreibung |
---|---|---|---|
TextValue | Textwert | Memofeld |
|
NumberValue | Double | Dezimalzahl |
|
Id | Fachl. ID | varchar(255) |
|
ExpiresAt | Gültig bis | Datetime |
|
DateValue | Datumswert | Datetime |
|
BooleanValue | Ja/Nein Wert | Boolean |
|
Allgemeiner Zugriff
Prinzipiell kann auf die Entität über die normalen BPM-Möglichkeiten (WorkSpaceScriptUtils ...) zugegriffen werden.
Der Zugriff insbesondere in Kacheln erfolgt über die vorhandenen Möglichkeiten (i. d. R. Suchen, bei Bedarf Kapselung in BPM-Prozessen oder separate Skriptbibliotheksmethoden)
Bereitstellung Util-Methoden
Die nachfolgend beschriebenen Methoden sollen einer Util-Klasse ResultStoreUtils bereitgestellt werden und dienen der vereinfachten Nutzung für die klassischen Anwendungszwecke
Es handelt sich defacto nur um Wrapper-Methoden um die Util-Klasse WorkSpaceProxyUtils. Daraus folgt, dass
die nachfolgend beschriebenen Methoden überall da verwendet werden können, wo die Util-Klasse WorkSpaceProxyUtils verwendet werden kann
die normalen BPM-Events bei der Veränderung von Daten in der Entität "Zwischenspeicher" ausgelöst werden
Definition Methoden
Nachfolgend wird der Begriff "Gültig" gemäß der zuvor getroffenen fachlichen Definition verwendet.
Methode | Beschreibung |
---|---|
void ResultStoreUtils.delete(String id) | Setzt den Eintrag mit dieser ID auf inaktiv. Gibt es keinen derartigen Eintrag, macht die Methode de facto nichts |
void ResultStoreUtils.save(String id, Object value) |
|
Serializable ResultStoreUtils.get(String id) |
|
Bereitstellung einer Standardregel für den Löschlauf
Um die zyklische Bereinigung von ungültigen Einträgen zu unterstützen, wird eine Standardregel für den Löschlauf erstellt. Die dahinterliegende Suche sucht alle Einträge in der Entität "Zwischenspeicher", die
inaktiv sind oder
deren "Gültig bis" Datum gefüllt ist und in der Vergangenheit liegt.
Die Regel ist im Auslieferungsstandard nicht aktiviert.
Skriptbibliothek
Unterstützung der Tastaturbedienung
Die Funktionalitäten der Skriptbibliothek kann nun weitestgehend mit der Tastatur bedient werden.
Der Hotkey einer Funktion wird im Tooltip des Schalters angezeigt.
Globale Hotkeys in der Skriptbibliothek
Neue Skriptklasse: STRG+EINFG
Neue Testklasse (sollte analog zur Neuanlage Skriptklasse geändert werden): STRG+ALT+EINFG
Importieren: STRG+ALT+I
Alle Test aller Skript-Klassen ausführen: STRG+ALT+UMSCHALT+T
Spezifische Hotkeys im Dashboard
Klasse löschen STRG+ENTF
Klasse exportieren STRG+UMSCHALT+E
Namen ändern STRG+ALT+R
Bearbeiten STRG+ENTER
Lesen STRG+ALT+ENTER
Klasse testen: STRG+ALT+T
Spezifische Hotkeys für eine geöffnete Skriptbibliothek
Skriptklasse speichern: STRG+S
Den ausgewählten Skript-Code exportieren: STRG+UMSCHALT+E
Klasse testen: STRG+ALT+T
Aktions-/Befehlsübersicht: F1
Methodenübersicht öffnen: STRG+ALT+M
Status Minimap togglen: STRG+ALT+UMSCHALT+M
Dialoge können mit der Tastatur bedient werden: Fokussieren der Schalter mittels TAB und Auswahl mit ENTER.
Handling "wie eine Datei"
"Skriptklasse als Datei": Für den Anwender verhält sich eine Skriptklasse wie eine Datei, d. h. er sieht die Methoden, Kommentare genau in der Reihenfolge und an der Stelle, an der er sie geschrieben hat. Dies gilt für Skriptklassen, Testklassen.
Javadoc-Kommentare zur Dokumentation
Javadoc-Kommentare zur Dokumentation können in der Skript-Bibliothek genutzt werden. Beim Öffnen einer Skript-Klasse werden die Kommentare aus dem I18n im dargestellten Format generiert.
![](../../../__attachments/6947198/overview.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Abbildung: Skript-Bibliothek
Zusätzliche Neuerungen
Einklappen/Ausklappen Buttons in der Toolbar
Einklappen aller Methodenkommentare
Ausklappen aller Methodenkommentare
Sprachauswahl in der Toolbar
Wechselt die der Sprache der Methodenkommentare
Falls ungespeicherte Änderungen vorliegen, erscheint eine Abfrage zum Speichern
Auswirkungen der Sprachauswahl:
Alle Methodenkommentare werden in der gewählten Sprache neu geladen
Die gewählte Sprache wirkt auf an allen Stellen im Editor aus, an der Dokumentation angezeigt wird
Beim Speichern wird die Dokumentation in Form der Methodenkommentare für die ausgewählte Sprache gespeichert
Codestände zum Vergleichen aus der Historie Verwenden die gewählte Sprache (Historie muss dazu neu geöffnet werden)
Auswirkungen auf den bisherigen I18n-Dialog:
Der bisherige I18n-Dialog kann weiterhin verwendet werden
Zum Hinterlegen der Klassedokumentation ist das auch zwingend notwendig
Beim Verlassen des I18n-Dialogs werden die Methodenkommentare im Editor neu geladen (Änderungen werden direkt in den Code übertragen)
Historie
Die bisherige Historie bezieht sich nur auf die Implementierung einer Methoden
Die aktuelle Implementierung versioniert ebenfalls die Dokumentation der Methoden
Beim Vergleich zweier Codestände wird immer die aktuell gewählte Sprache verwendet
Beim Vergleich mit alten Codestände, zu denen keinen versionierte Dokumentation existiert, wird auf die aktuelle Methodendokumentation zurückgefallen
Unterstützung im Editor
Durch das Tippen von '/**' vor einer Methode wird (sofern ein Dokumentationskommentar an diese Methode erlaubt) ein Template für diese Methoden angeboten
Bennent man einen Parameter mittels Editorfunktion (F2) um, dann wird im zugehörigen Kommentar der Parametername entsprechend angepasst
Die führenden '*' werden beim Einfügen einer neuen Zeile durch die Enter-Taste ergänzt (außer man ist im Abschnitt zum Codebeispiel)
Bonus (Maskenskript-Editor):
im Maskenskript-Editor werden javadoc-Kommentare an Methoden ebenfalls ausgewertet und angezeigt
Anpassung der Ausgabe in den Deprecation-Warnungen
Beim Update des CRM-Systems erfolgt u.a. eine Prüfung der veralteten (deprecated) Skriptbibliotheksmethoden. Diese werden hierbei in einem separaten Deprecation-Log gesammelt inklusive ihrer Verwendungsstelle ausgegeben. Dies befähigt den CRM-Administrator dazu, die entsprechenden Stellen zu erkennen, zu prüfen und ggf. auf die neue gültige Skriptbibliotheksmethode anzupassen.
Die Ausgabe des festen Textes "No alternative is available" im Deprecation Log wird ersetzt durch "Please see method documentation for further details".
Skripting (Neue Methoden)
callScriptClass und existsScriptClass
Die Verfügbarkeit der Methoden callScriptClass
und existsScriptClass
aus ScriptUtils war bisher auf BpmMaskScript, MaskScript und BpmScript eingeschränkt. Nun sind sie auch auch im EventRuleScript
verfügbar.
isManagingAllowed
Es kann geprüft werden, ob im aktuellen Benutzerkontext die Rechte für einen Datensatz oder eine Suche verändert werden dürfen.
cancelInstance
Beendet die Instanz des gegeben Prozesses. Die ID darf nicht zu dem eigenen Prozess oder dessen Hauptprozess gehören.
sendActivity (Server)
Versendet eine gespeicherte Aktivität über die serverseitige Mailschnittstelle. Die Mail wird mit CURSOR-CRM synchronisiert.
Der Empfängerkreis wird für externe Mails aus den verknüpften Ansprechpartnern und Mitarbeitern zusammengestellt. Interne Mails werden an die verknüpften Mitarbeiter versendet.
Wenn keine Mail-Konfiguration angegeben wurde, greifen die Mail-Einstellungen des Benutzers.
isLocked
Prüft, ob das referenzierte Dokument derzeit ausgeliehen ist.
Hinweis: Wird für den übergebenen Primärschlüssel kein Dokument gefunden (z.B. PK ist nicht vorhanden, keine Berechtigung oder anderer Mandant o.ä.) so wird eine Exception geworfen. Der Anwender wird über den Fehler in der Dokumentenverarbeitung informiert, sofern die Exception nicht behandelt wird.
getLockUser
Liefert den IContainer des Mitarbeiters, der das referenzierte Dokument ausgeliehen hat.
Null wird zurückgegeben, wenn der Dokumentendatensatz aktuell nicht ausgeliehen ist.
Hinweise:
Der null-Check kann als eine Alternative zu DocumentUtils.isLocked(String) verwendet werden.
Wird für den übergebenen Primärschlüssel kein Dokument gefunden (z.B. PK ist nicht vorhanden, keine Berechtigung oder anderer Mandant o.ä.) so wird eine Exception geworfen. Der Anwender wird über den Fehler in der Dokumentenverarbeitung informiert, sofern die Exception nicht behandelt wird.
isVisible
Prüft, ob ALLE genannten Felder auf der Maske sichtbar sind.
updateAndCalculateItems
Aktualisiert alle Angebots- oder Vertragspositionen in der übergebenen Reihenfolge. Bestehende Positionen werden aktualisiert, fehlende Positionen gelöscht und neue Positionen an anhand der Listenposition eingefügt. Die Gesamtpreise und Zwischenpositionen werden für die Positionen und Angebote bzw. Verträge aktualisiert. Während der Aktualisierung wird der Workspace gesperrt und anschließend wieder freigegeben.
createMassDataList
Erstellt einen Massendatenaktions-Datensatz, dessen temporäre Tabelle mit den Container-Listen-Daten gefüllt werden, um sie in der anschließenden Massendatenaktion zu verarbeiten.
appendMassDataList
Erstellt einen Massendatenaktions-Datensatz, dessen temporäre Tabelle mit den Container-Listen-Daten gefüllt werden, um sie in der anschließenden Massendatenaktion zu verarbeiten.