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
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"
http://myServer.myDomain.de:18443/invocation/InvocationServlet?job=isApplicationDeployed
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
CARMEN 1.0
Job name: isApplicationDeployed
...
Job done OK
Bye!
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
Das System darf nicht als Produktivsystem im PropertyMapper gekennzeichnet sein (siehe Sicherheitseintrag im PropertyMapper).
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.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).Es muss ein gültiger Systemadministrator im CRM-System konfiguriert sein.
Es liegt eine Datensicherung vor.
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
|
2. | Das Anmelden am Applikationsserver muss mit einem Systemadministratoren-Benutzer erfolgen. |
3. | Die Webseite wird zur Laufzeit der Aktion erstellt. Ist das System noch als "produktiv" gekennzeichnet erfolgt die Ausgabe
CODE
|
Alternativablauf
Die genannten Dateien sind im Lieferumfang im Verzeichnis tools\LuceneIndex enthalten.
1. | Konfiguration der Datei |
2. | Aufruf der Datei |
3. | Das Ergebnis ist in der Log-Datei |
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.
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'
:
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"
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"
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"
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
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
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"
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"
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"
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"
http://myServer.myDomain.de:18443/invocation/InvocationServlet?job=getRightFunction
getRightForPKFunction
Mit dieser Funktion kann man sich die Rechtegruppen und Benutzerkürzel ausgeben lassen, die auf einen bestimmten Datensatz gesetzt sind.
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"
http://myServer.myDomain.de:18443/invocation/InvocationServlet?job=getRightForPKFunction&table=Activity&pk=1snf74h1bl0lsgtuAc