Entität Event (C12EVENT)
Kurzbeschreibung
Die Entität Event (C12EVENT) dient als Sammler für Ereignisse, deren Ergebnisse beispielsweise an Drittsysteme (z.B. ERP-Systeme) übergeben werden sollen. Schnittstellen können auf diese Ereignisse entsprechend reagieren, die Daten verarbeiten und ein Ergebnis über den Verarbeitungsstatus an EVI zurückliefern. Die für die Verarbeitung benötigten Informationen werden in der Regel in Transaktionstabellen abgelegt. Events enthalten entsprechende Verweise auf die dort enthaltenen Transaktionsdatensätze.
Funktionsweise
Zum Auslösen eines Events wird ein Eintrag unter Angabe des Eventnamens, der Quelltabelle und deren Primärschlüssel, des Quelldatensatzes sowie des Mitarbeiters - welche die Bereitstellung des Events bspw. durch Auslösen eines Prozesses veranlasst hat - i.d.R. durch einen BPM-Prozess oder eine Schnittstelle geschrieben und gespeichert.
Die Event-Tabelle dient als Transaktionstabelle, auf die weitere BPM-Prozesse oder Schnittstellen reagieren können. Dies kann bspw. bei Neuanlage eines neuen Events oder durch zyklische Prüfung der Event-Tabelle geschehen. Das Überprüfen der Eventtabelle auf neue Einträge ist je Prozess oder Schnittstelle individuell zu behandeln.
Beispiel: Bei der Angebotsannahme schreibt der Angebotsprozess einen Datensatz in die Event-Tabelle. Die WOI überwacht die Tabelle und löst automatisch die Übertragung des angenommenen Angebots nach SAP aus. Parallel könnte z.B. die Beschaffung über das neue Angebot informiert werden.
Sobald am ausgehenden Datensatz, bspw. dem Angebot ein Event vorliegt, bietet die Kachel "Event-Monitor" einen Überblick über diese Events. Weitere Informationen zu dieser Kachel finden Sie hier.
Eventhandling
Durch einen Prozess ausgelöst wird ein Datensatz in die Event-Tabelle eingefügt und somit ein Event geschrieben.
Feldliste
Die Anlage von Event-Datensätzen ist BPM-Prozessen und Skripten vorbehalten. Eine manuelle Neuanlage von Event-Datensätzen durch Anwenderinnen und Anwender ist fachlich nicht vorgesehen. Alle Felder der Entität Events sind schreibgeschützt.
Feldname | Technisches Feld | Datentyp | Beschreibung |
---|---|---|---|
Entität | DATAENTITY | CHAR (50) | Name der Entität z.B. Quote |
Primärschlüssel | DATAPK | CHAR (50) | Pk des Datensatzes in der Entität <Entity> |
Mitarbeiter | Employee | Nachschlagefeld | Nachschlagefeld auf Mitarbeiter |
Eventname | EVENT | CHAR (50) | Name des Events z. B. "C12MOVE", "RLM_QUOTE_ACCEPTED" ... |
Vorgänger Event | PREVEventPk | Schlüsselfeld | Schlüsselfeld zur Hinterlegung eines Vorgänger-Events |
Kopfsatz | ISHEAD | Boolean | Das Flag wird zur Prüfung verwendet, ob ein Event erneut übertragen werden kann. Nur in diesem Fall wird der Button "Event erneut übertragen" aktiviert. |
Änderungsdaten | CHANGEDDATA | Memo | Hier können bspw. Strukturen von geänderten Daten aufgenommen werden, um diese durch konsumierende Systeme verarbeiten zu können. |
Durch den Eintrag in die Eventtabelle wird, wie oben beschrieben, ein definierter Prozess oder Schnittstelle gestartet, die auf das neue Event reagieren. Der verarbeitende Prozess oder Schnittstelle führt die Verarbeitung durch und erzeugt nach Abschluss der Verarbeitung oder im Fehlerfall einen Eintrag in der EventResult-Tabelle zum Event.
Index
Es wird empfohlen, einen Index auf die Spalten "DATAENTITY" und "DATAPK" der Tabelle der Events zu legen.
ORACLE
-- Prüfen, ob ein potenziell passender Index bereits existiert
SELECT index_name, table_name, column_name, column_position
FROM user_ind_columns
WHERE column_name IN ('DATAENTITY', 'DATAPK')
AND table_name = 'C12EVENT'
ORDER BY index_name, column_position asc
;
-- Auslesen und Prüfen des Index-Tablespace aus dem PropertyMapper
SELECT TABLESPACE_NAME
FROM user_tablespaces
WHERE TABLESPACE_NAME =
(SELECT UPPER(TO_CHAR(propertyValue))
FROM PropertyMapper
WHERE id = '/de/cursor/util/sql/DatabaseInformation$!!$indexTablespace'
)
-- Wenn ein Index vorhanden ist, diesen prüfen, ob er genutzt werden kann, ansonsten diesen Index erstellen
CREATE INDEX C12EVENT_IDX_ENTITY_PK
ON C12EVENT(DATAENTITY, DATAPK) TABLESPACE <Index-Tablespace>
;
/* Beispiel Statement
CREATE INDEX C12EVENT_IDX_ENTITY_PK
ON C12EVENT(DATAENTITY, DATAPK) TABLESPACE EVIJET_E_INDX
*/
MSSQL
-- Prüfen, ob ein potenziell passender Index bereits existiert
SELECT i.name AS index_name
,object_name(i.object_id) as table_name
,COL_NAME(ic.object_id,ic.column_id) AS column_name
,ic.index_column_id
,ic.key_ordinal
,ic.is_included_column
FROM sys.indexes AS i
INNER JOIN sys.index_columns AS ic
ON i.object_id = ic.object_id AND i.index_id = ic.index_id
WHERE COL_NAME(ic.object_id,ic.column_id) in ('DATAENTITY', 'DATAPK')
AND object_name(i.object_id) = 'C12EVENT'
ORDER BY index_name, ic.key_ordinal asc
-- Wenn ein Index vorhanden ist, diesen prüfen, ob er genutzt werden kann, ansonsten diesen Index erstellen
CREATE INDEX C12EVENT_IDX_ENTITY_PK ON C12EVENT (DATAENTITY, DATAPK)
;