Skip to main content
Skip table of contents

InvocationServlet

Allgemeines zur Nutzung des InvocationServlet

Das InvocationServlet dient dazu auf einfache Art dem Applikationsserver Befehle zu erteilen.

Der Aufruf erfolgt schematisch in einem Browser wie folgt:

Aufruf des InvocationServlet
CODE
https://<FQDN des ServerNamens>:<Portnummer der Installation>/invocation/InvocationServlet?job=<JobToDo>

Nachdem der Applikationsserver kontaktiert wurde, ist es notwendig, dass ein Benutzerkürzel (in Großbuchstaben) und das zugehörige Passwort übergeben werden.

FQDN des ServerNamens

An dieser Stelle muss der full qualified domain name des Servers eingetragen werden. 

In folgenden Beispielen werden wir den Namen des Servers myServer in der Domäne myDomain.de nutzen, woraus sich der FQDN myServer.myDomain.de ergibt.

Portnummer der Installation

Der JBoss-Applikationsserver kann für verschiedene Portbereiche definiert werden. 

Der Portbereich kann im Applikationsserver in der Datei standalone.conf.bat unter dem Namen JBOSS_PORT_RANGE nachgeschaut werden. 

Für unsere Beispiele nehmen wir an, in der standalone.conf.bat steht

set JBOSS_PORT_RANGE=10

Nun errechnet sich die "Portnummer der Installation" in unseren Beispielen wie folgt:

(JBOSS_PORT_RANGE * 1000) + 8443 = 18443

isApplicationDeployed

Mit diesem Aufruf kann geprüft werden, ob der Applikationsserver gestartet und die Applikation erreichbar ist.

Aufruf über einen Webbrowser durch Eingabe der URL

Beispiel für den einfachen Job "isApplicationDeployed"
CODE
 http://myServer.myDomain.de:18443/invocation/InvocationServlet?job=isApplicationDeployed

(Warnung) Hinweis 1:
Ist die Anwendung noch nicht auf dem Applikationsserver deployed, so erhält man eine Fehlermeldung, dass die Seite nicht erreichbar ist. Ansonsten erhält man eine Bestätigungsseite

CODE
CARMEN 1.0
Job name: isApplicationDeployed
...
Job done OK
Bye!  

(Warnung) Hinweis:

Es ist zu beachten, dass diese Meldung dann erfolgreich ist, wenn das InvocationServlet gestartet ist. Es ist damit noch nicht sichergestellt, dass auch die Hauptanwendung schon komplett gestartet ist, es kann also zu kleineren Zeitverzögerungen kommen.

Löschen von nicht System- und Customizing- Daten (cleanTables)

Ziel

Aus einem System sollen die Daten entfernt werden, die nicht als System- oder Customizing-Daten definiert wurden. Es werden also alle Bewegungs- und interne Daten gelöscht.

Vorbedingung

  1. Das System darf nicht als Produktivsystem im PropertyMapper gekennzeichnet sein (siehe Sicherheitseintrag im PropertyMapper).

  2. Es ist im PropertyMapper der Eintrag mit der id = '/de/cursor/jevi/server/system/TableController$!!$HandleAsCustomizingTable' zu prüfen.
    In diesem Eintrag können zusätzliche Tabellen hinterlegt werden. Diese Tabellen werden als Tabellen mit dem Inhaltstyp Inhalt: Customizing gewertet.

  3. Ist die Datenmenge sehr groß, so ist im PropertyMapper der Eintrag mit der id = '/de/cursor/jevi/server/business/businesslogic/TransactionWrapper$!!$TimeOutCleanTables' zu prüfen bzw. anzupassen.
    In diesem Eintrag kann die Transaktionsdauer verlängert werden. Ist der Eintrag nicht vorhanden, beträgt die Transaktionsdauer 3600 sec (1h).

  4. Es muss ein gültiger Systemadministrator im CRM-System konfiguriert sein.

  5. Es liegt eine Datensicherung vor.

  6. Es sind keine Anwender mehr im System angemeldet

Definition Systemadministrator
Ein Systemadministrator muss

  • alle Bereiche der Anwendung konfigurieren können

  • mindestens Leseberechtigungen auf allen Felder der Anwendung besitzen.

Bei der Auslieferung des CRM-Systems trifft dies auf den TECH_USER zu.

Nachbedingung

Im System liegen nur noch System- und Customizing-Daten vor.

Nachbedingung (Fehlerfall)

Im Fehlerfall werden keine Änderungen an Daten vorgenommen

ORACLE
Unter ORACLE kann dann die Datenbank noch gesperrt sein, so dass ein erneuter Versuch auf den Fehler java.sql.SQLException: ORA-00054: Ressource belegt und Anforderung mit NOWAIT angegeben oder Timeout abgelaufen
läuft. In diesem Fall muss entweder lange genug gewartet oder die Oracle Instanz neu gestartet werden.

Hauptakteur

Ein Mitarbeiter der CUSROR Software AG oder andere geschulte Personen mit einer Anmeldung als:

  • Systemadministratoren im Produktivsystem ausschließlich vor dem Produktivgang.

  • Systemadministratoren im Testsystem.

  • Systemadministratoren im Konsolidierungssystem.

Auslösendes Ereignis

Aktuell ist der einzige Weg das Starten über das InvocationServlet.

Standardablauf

1.

Aufruf über einen Webbrowser durch Eingabe der URL

Beispiel
CODE
https://myServer.myDomain.de:18443/invocation/InvocationServlet?job=cleanTables

2.

Das Anmelden am Applikationsserver muss mit einem Systemadministratoren-Benutzer erfolgen.
Das Kürzel ist in Großbuchstaben einzugeben
Das zugehörige Passwort zum Kürzel ist im Klartext einzutragen

3.

Die Webseite wird zur Laufzeit der Aktion erstellt. Ist das System noch als "produktiv" gekennzeichnet erfolgt die Ausgabe

CODE
CARMEN 1.0
Job name: cleanTables
...
This action is not allowed for a system of type production system
The type of the system can be set by the PropertyMapper using id '/de/cursor/jevi/server/system/SystemInfo$!!$Systemtype'

No changes are done.

Bye!  

Alternativablauf

Die genannten Dateien sind im Lieferumfang im Verzeichnis tools\LuceneIndex enthalten.

1.

Konfiguration der Datei InvocationServlet.bat (nur bei der Einrichtung notwendig)

2.

Aufruf der Datei InvocationServlet.bat mit dem Parameter cleanTables
Wird diese Batchdatei verwendet, so ist auch das Programm wget64.exe notwendig.
Beide Dateien werden im Standard nicht ausgeliefert.

3.

Das Ergebnis ist in der Log-Datei <interner Produktname>_invocator.log zu finden.

Konfiguration dieser Funktionalität 

 Definieren von Entitäten, die nicht geleert werden sollen

Entitätenkonfiguration

Wird eine C2Entität mit dem Flag Enthält Customizing markiert, so wird diese Entität nicht geleert.

PropertyMapper

Über die Adminkonsole kann im Bereich Customizing - Erweiterte Einstellungen (Anwendungsvariablen) ein neuer Eintrag mit der ID /de/cursor/jevi/server/system/TableController$!!$HandleAsCustomizingTable angelegt werden.

Als Wert kann eine Liste von Entitätsnamen hinterlegt werden, die dadurch als Tabellen mit Customizinginhalt definiert werden. Das Trennzeichen lautet $!!$.

Die Existenz der Entitäten im System wird überprüft, hierbei ist auf Groß/Kleinschreibung zu achten.
Beispiel:
C2TEST1$!!$C2TEST2 definiert die beiden Tabellen C2TEST1 und C2TEST2 als Tabellen mit Customizing Inhalt

Es werden nur Tabellen berücksichtigt, die als Inhaltstyp Inhalt: Interne oder Inhalt: Bewegungsdaten hinterlegt haben (zum Inhaltstyp siehe unten). Ausnahme hierzu die Tabellen des Personenumfelds, diese werden bereits gesondert behandelt.

Die in diesem Eintrag hinterlegten Entitäten werden als Tabellen vom Inhaltstyp Inhalt: Customizing betrachtet und entsprechend behandelt.

Aufheben der Lösch-Sperre

In der Auslieferung existiert ein PropertyMapper-Eintrag mit der id = '/de/cursor/jevi/server/system/SystemInfo$!!$Systemtype'. Dieser Eintrag hat den Wert 'production system' und soll verhindern, dass die Funktion versehentlich auf dem System ausgeführt wird.

Wir dieser Wert auf einen anderen mit einem SQL-Editor geändert, so gilt dieses System nicht mehr als "produktiv" und das Leeren kann erfolgen.

SQL
UPDATE PropertyMapper SET propertyValue = 'test system' where id = '/de/cursor/jevi/server/system/SystemInfo$!!$Systemtype'

Im Anschluss an das Ändern von Konfigurationsdaten per SQL ist der Servercache des Applikationsservers zu leeren.

Transaktionszeit verändern

  • PropertyMapper-Eintrag mit der id = '/de/cursor/jevi/server/business/businesslogic/TransactionWrapper$!!$TimeOutCleanTables'

Beispiel (ORACLE-Syntax) für die Neuaufnahme des PropertyMapper-Eintrags mit der id = '/de/cursor/jevi/server/business/businesslogic/TransactionWrapper$!!$TimeOutCleanTables':

SQL
INSERT INTO PropertyMapper (Pk, id,
propertytype, property, principal, propertyvalue,
CustLayer, Active, MassData, OfflineData, WFInstanceId, RightPk, CreateUser, UpdateUser, CreateDate, UpdateDate)
VALUES ('SYSTEM.TimeOutCleanTables','/de/cursor/jevi/server/business/businesslogic/TransactionWrapper$!!$TimeOutCleanTables',
'SYSTEM', '', '', '3600',
'CN', 1, 0, 0, '#EMPTY-KEY#', 'RIGHTTEMPLATE', 'TECH_USER', 'TECH_USER', sysdate, sysdate)

Im Feld PropertyValue kann die Transaktionszeit in Sekunden für das Daten leeren hinterlegt werden. Der Standardwert für diesen Eintrag beträgt 3600 sec (= 1h), falls er nicht existiert.
Nach dem Absetzen des SQL-Statements ist der Server-Cache zu leeren, damit die Einstellung greift.

Welche Daten werden gelöscht?

Es werden alle Tabellen deren Inhalt als Bewegungsdaten oder interne Daten eingestuft sind geleert (Ausnahme aus technischen Gründen: die Tabelle EmployeeLog).
Es werden alle zu diesen Tabellen gehörenden Linktabellen geleert.

Eine Sonderbehandlung erfolgt für die Tabellen des Personenumfelds.
Hierzu zählen die Tabellen:
Address, ContactPerson, Customer, Employee, Person, Telecom, rCoPeAd, rCuAd und rEmAd

Diese Tabellen werden nur teilweise geleert. Es verbleiben alle Datensätze im System deren Personendatensatz eine der folgenden Bedingungen erfüllt:

  • Der Personendatensatz gehört zum Systembetreiber (definiert über die PropertyMapper id = 'SYSTEMOWNER'

  • Der Personendatensatz besitzt eine aktive Mitarbeiter-Rolle (einen aktiven Datensatz in der Tabelle Employee)


Es werden alle Einträge aus dem PropertyMapper mit dem PropertyType = 'USER' gelöscht.

Eine Information über den Inhaltstyp der Tabellen findet man im Client im Verzeichnis <Installationsverzeichnis>\jboss\conf in der Datei FieldReport.csv.

Tipp

Es ist empfehlenswert diese csv-Datei in Excel zu importieren (Trennzeichen ist der Tabulator) und über einen Filter die Zeilen zu holen, die mit dem Text Inhalt: beginnen.

indexUnindexed

Mit diesem Aufruf kann das Indizieren der Daten in der UnindexedEntity getriggert werden. Normalerweise erfolgt dieser Start über den Timer "Suchindex erneuern" und sollte nicht mehr notwendig sein.

Beispiel für den einfachen Job "indexUnindexed"
CODE
http://myServer.myDomain.de:18443/invocation/InvocationServlet?job=indexUnindexed

optimizeIndexes

Mit diesem Aufruf kann die Optimierungsfunktion der Lucene-Bibliothek gestartet werden. Diese Funktion ist allerdings in den seltensten Fällen noch notwendig, sie ist ein Relikt aus frühen Releases der Lucene-Bibliothek.

Beispiel für den einfachen Job "optimizeIndexes"
CODE
http://myServer.myDomain.de:18443/invocation/InvocationServlet?job=optimizeIndexes

createIndex

Aufruf der Lucene Indizierung aller Entitäten

Mit diesem Aufruf kann die Indizierung der Entitäten gestartet werden. Erfolgt der Aufruf ohne weitere Parameter, werden alle Entitäten indiziert (analog zu dem Klick auf den Schalter "Alle erzeugen" in der Adminkonsole unter dem Bereich Suchen - Juhuuu).

Beispiel für den Job "createIndex"
CODE
http://myServer.myDomain.de:18443/invocation/InvocationServlet?job=createIndex
Aufruf der Lucene Indizierung bestimmter Entitäten


Der Job kann noch um den Parameter tables erweitert werden. Es können dann kommasepariert Entitätsnamen angegeben werden, die an die Lucene-Indizierung gereicht werden. 

Beispiel für den Job "createIndex" mit dem Parameter tables
CODE
http://myServer.myDomain.de:18443/invocation/InvocationServlet?job=createIndex?tables=activity,customer,contactperson,isApplicationDeployed

In der Ausgabe zu diesem Beispiel kann man dann erkennen, welche Entitäten indiziert werden. Alle fehlerhaften Tabellennamen werden ignoriert (hier isApplicationDeployed).

Ergebnis aus dem Beispielaufruf
CODE
CARMEN 1.0
Job name: createIndex?tables=activity,customer,contactperson,isApplicationDeployed
...
for entities: 
create new Lucene index for Customer
create new Lucene index for Activity
create new Lucene index for ContactPerson

Job done OK
Bye!  

clearCaches


Mit diesem Aufruf wird das Leeren des Applikationsserver Caches ausgelöst.

Beispiel für den einfachen Job "clearCaches"
CODE
http://myServer.myDomain.de:18443/invocation/InvocationServlet?job=clearCaches

clearGroupsAndRightsCache


Mit diesem Aufruf wird das Leeren der Gruppen und Berechtigungs-Caches des Applikationsservers ausgelöst.

Beispiel für den einfachen Job "clearGroupsAndRightsCache"
CODE
http://myServer.myDomain.de:18443/invocation/InvocationServlet?job=clearGroupsAndRightsCache

deleteOldHistory

Dieser Aufruf ist analog zum Klick auf den Schalter "Bereinige interne Sicherungen" in der Adminkonsole unter dem Bereich Dokumentenintegration - Speicherverwaltung Dokumente.

Es werden alte interne Sicherungskopien aus den history Verzeichnissen der Dokumentenverwaltung gelöscht.

Beispiel für den Job "deleteOldHistory"
CODE
http://myServer.myDomain.de:18443/invocation/InvocationServlet?job=deleteOldHistory

getRightFunction

Mit diesem Aufruf erhält man eine einfache Übersicht über die aktuell konfigurierten Feld- und Aktionsrechte der Anwendung. 

Beispiel für den Job "getRightFunction"
CODE
http://myServer.myDomain.de:18443/invocation/InvocationServlet?job=getRightFunction

Gekürzte Ausgabe des Funktionsaufrufs

CARMEN 1.0

FeldRechte

Address

Feldberechtigungen Standard

Gruppe

Lesen

Schreiben

Manage

Vertraulich

ADMINISTRATION

true

true

true

true

DEFAULT

true

true

false

false

GUEST

true

false

false

false

USERS

true

true

false

false

  • Active.Address

  • AddressCustomerKey.Address

  • AddressKey.Address

  • AddressType.Address

  • City.Address

  • ClientNo.Address

  • CoName1.Address

  • CoName2.Address

  • CoName3.Address

  • Community.Address

  • ComposedAddress.Address

  • CountryKey.Address

  • CreateDate.Address

  • CreateUser.Address

  • DefaultCoPeAd.Address

  • DefaultCuAd.Address

  • DefaultEmAd.Address

  • District.Address

  • ExtCompAddress.Address

  • Freeboolean1.Address

  • Freeboolean10.Address

  • Freeboolean11.Address

  • Freeboolean12.Address

  • Freeboolean13.Address

  • Freeboolean14.Address

  • Freeboolean15.Address

  • Freeboolean2.Address

  • Freeboolean3.Address

  • Freeboolean4.Address

  • Freeboolean5.Address

  • Freeboolean6.Address

  • Freeboolean7.Address

  • Freeboolean8.Address

  • Freeboolean9.Address

  • Freedate1.Address

  • Freedate2.Address

  • Freedate3.Address

  • Freedate4.Address

  • Freenumber1.Address

  • Freenumber2.Address

  • Freenumber3.Address

  • Freenumber4.Address

  • Freetext1.Address

  • Freetext10.Address

  • Freetext11.Address

  • Freetext12.Address

  • Freetext13.Address

  • Freetext14.Address

  • Freetext15.Address

  • Freetext16.Address

  • Freetext17.Address

  • Freetext18.Address

  • Freetext19.Address

  • Freetext2.Address

  • Freetext20.Address

  • Freetext3.Address

  • Freetext4.Address

  • Freetext5.Address

  • Freetext6.Address

  • Freetext7.Address

  • Freetext8.Address

  • Freetext9.Address

  • GeocodeState.Address

  • IsDefault.Address

  • Lat.Address

  • LetterCoPeAd.Address

  • LetterCuAd.Address

  • LetterEmAd.Address

  • LetterheadAddition.Address

  • Lng.Address

  • LocationPk.Address

  • MassData.Address

  • NameKey.Address

  • OfflineData.Address

  • PersonPk.Address

  • Pk.Address

  • RelationPKrCoPeAd.Address

  • RelationPKrCuAd.Address

  • RelationPKrEmAd.Address

  • ReplaceCoFields.Address

  • RightPk.Address

  • State.Address

  • StateDesc.Address

  • Status.Address

  • Street.Address

  • StreetNumber.Address

  • StreetNumberAddition.Address

  • UpdateDate.Address

  • UpdateUser.Address

  • WFInstanceId.Address

  • ZIPKey.Address

 ...

Funktionsrechte

edit.keys.permissionAdmin, FachAdmin Berechtigungen für Funktionsrechte

Gruppe

Lesen

Schreiben

Manage

Vertraulich

ADMINISTRATION

true

true

true

true

logonToEachLayer.permissionAnmeldung in allen Schichten

Gruppe

Lesen

Schreiben

Manage

Vertraulich

ADMINISTRATION

true

true

true

false

...

getRightForPKFunction

Mit dieser Funktion kann man sich die Rechtegruppen und Benutzerkürzel ausgeben lassen, die auf einen bestimmten Datensatz gesetzt sind. 
(Warnung) Hinweis: Mit dem Tool wget kann der Aufruf nicht korrekt erfolgen, da das & nicht korrekt verarbeitet wird. Mit der batch InvocationServlet.bat kann aber die korrekte URL generiert und über einen Browser ausgeführt werden.

Es sind die Parameter table und pk zu übergeben.

Beispiel für den Job "getRightForPKFunction"
CODE
http://myServer.myDomain.de:18443/invocation/InvocationServlet?job=getRightForPKFunction&table=Activity&pk=1snf74h1bl0lsgtuAc

Ausgabe der Berechtigung für den Datensatz aus der Activity Entität mit dem Pk '1snf74h1bl0lsgtuAc'

CARMEN 1.0

Berechtigung

1snf74h1bl0lsgtuAc

Template: DefaultTemplate

Gruppe

Lesen

Schreiben

Manage

Vertraulich

ADMINISTRATION

true

true

true

true

DEFAULT

true

true

true

false

GUEST

true

true

false

false

USERS

true

true

false

false

ADMINISTRATION

  • ADMIN

  • TECH_USER

DEFAULT

  • APE

  • ADMIN

  • DEFAULT

  • SMO

  • USER

  • FACHADMIN

  • EMH

GUEST

  • GUEST

USERS

  • USER

JavaScript errors detected

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

If this problem persists, please contact our support.