Skip to main content
Skip table of contents

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.

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.

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. 

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>

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:

CODE
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.

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.

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)

SQL
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)

SQL
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.

SQL
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.

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

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. 

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)

Vertriebsboard (C0DesktopSalesBoard)

Supportboard (C0DesktopSupportBoard)

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.

Abbildung: Neue Option "Text umbrechen"

Maximalbreite für Spalten

Maskendesigner kann nun eine Maximalbreite für Spalten festlegen.

  • 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.

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

Beim Export des Moduls passieren dieselben Prüfungen sicherheitshalber noch einmal (analog zum Customizing-Transport).

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:

CODE
<Selektiertes Verzeichnis>\ImagesExport\<ENTITY_IMAGE/USER_IMAGE>\<C0/C1/C2>\<width>x<height>\<Bildname>.<Bildendung>

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:

Beispiel Powershell: 

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

GROOVY
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. 

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.

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.

Die transportierten Daten werden durch die Suche "C0SYSTEM_OWNERS_TO_MERGE" bestimmt.

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.

Einer neuen Löschregel muss ein Benutzer zugewiesen werden.

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.

Beim Aktivieren der Datensatzanzahl für eine Löschregel eines im anderen Benutzerkontext wird eine gesonderte Meldung ausgegeben.

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")

      screenshot-6.png

    • 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.

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

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.

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.

Löschen in der Detailansicht

Löschen in der Listenansicht über einen long touch auf einen Datensatz

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.

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.

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.

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.

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

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

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

  • Fachlicher Wert als String

  • Expizit als Memofeld definiert, damit auch große Text (JSon-Strukturen) gespeichern werden können

NumberValue

Double

Dezimalzahl

  • Fachlicher Wert als Zahl

Id

Fachl. ID

varchar(255)

  • Fachliche ID für diesen Eintrag

  • Pflichtfeld

  • Doppelte Felderwerte verhindern = true

ExpiresAt

Gültig bis

Datetime

  • Zeitpunkt, bis zu dem dieser Eintrag fachlich gültig ist

DateValue

Datumswert

Datetime

  • Fachlicher Wert als Datum

BooleanValue

Ja/Nein Wert

Boolean

  • Fachlicher Wert Ja/Nein

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)
void ResultStoreUtils.save(String id, Object value, Date expiresAt)

  • Legt einen neuen Eintrag für diese ID an oder aktualisiert einen bestehenden Eintrag. Es werden auch vorhandene inaktive Einträge aktualisiert.

    id: Fachliche ID des Eintrag
    value: Muss vom Typ String, Zahl, Datetime oder Boolean und wird in das entsprechende Feld geschrieben. Bei einem nicht unterstützten Typ wird eine sprechende Fehlermeldung geworfen. "null" wird explizit nicht als zu speichernder Wert unterstützt
    expiresAt: optional, Zeitpunkt der Gültigkeit. Bei "null" ist der Datensatz immer gültig.

  • String-Werte werden immer in das Memofeld geschrieben. Für kurze Texte ist dies oversized, für JSon-Strukturen hilfreich. Sich auf ein Feld zu beschränken bringt die Einfachheit in der Nutzung.

Serializable ResultStoreUtils.get(String id)

  • Gibt den gefüllten Wert (Text, Datum, Zahl, Boolean) für den Eintrag "ID" zurück, sofern dieser existiert und gültig ist.

  • Existiert kein Eintrag mit dieser ID bzw. ist dieser zeitlich nicht mehr gültig oder inaktiv, liefert die Methode null zurück.

  • Die Methode liefert den korrekten Datentyp zum gefüllten Feld zurück, d. h. ist das Feld "NumberValue" gefüllt, kommt ein Double zurück, ist "BooleanValue" gefüllt, kommt Boolean zurück usw.

    • Double wert = ResultStoreUtils.get("de.cursor.churnscore.average");

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.

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.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.