Seitenhistorie
...
elektronische Kontoauszüge, die im MT940-Format vorliegen, automatisiert einzulesen
die eingelesenen Daten in eine Struktur von Nuclos-Entitäten zu übertragen
die Bankumsätze anhand des Verwendungszwecks automatisch anderen Entitäten ("Referenzen", das sind je nach Anwendungszweck , bspw. Ihren Rechnungen) zuzuorden
...
sieben Entitäten (für Kontoauszüge, Bankumsätze und diverse Stammdaten),
sechs Layouts,
ein Statusmodell (für Bankumsätze),
- zwei Attributgruppen,
diverse Java-Regeln (verteilt auf Packages),
- drei System-Parameter,
eine Jobsteuerung (zur Steuerung des Import-Jobs),
drei Strukturdefinitionen (für den Import von Stammdaten) und
zwei Nuclet-Abhängigkeiten.
...
Typ | Name, englisch | Name, deutsch | Kurzbeschreibung | |||
---|---|---|---|---|---|---|
Entität | Bank Statement | Kontoauszug |
| |||
| Bank Transaction | Bankumsatz |
| |||
| Bank Transaction Type | Bankgeschäftsvorfall |
| |||
| Banking Business Line | Bankgeschäftssparte |
| |||
| Debit/Credit Mark | Soll-Haben-Kennung |
| |||
| MT940 Reference | MT940-Referenz |
| |||
| Bank Transaction Ref | Referenz-2-Bankumsatz |
| |||
Layout | Bank Statement |
| Layout für Entität „Bank Statement“ | |||
| Bank Transaction, SINGLE |
| Layout für Entität „Bank Transaction“ | |||
Bank Transaction, MULTIPLE | alternatives Layout für die Entität „Bank Transaction“ mit Mehfachbezug | |||||
| Bank Transaction Type |
| Layout für Entität „Bank Transaction Type“ | |||
| Banking Business Line |
| Layout für Entität „Banking Business Line“ | |||
| Debit/Credit Mark |
| Layout für Entität „Debit/Credit Mark“ | |||
Statusmodell | Bank Transaction |
| Statusmodell für die Entität „Bank Transaction“ | |||
Attributgruppe | Bank Transaction Data | Bankumsatz- und Kontoauszugsdaten | ||||
Bank Transaction References | den Bankumsätzen zugeordnete Refererenzen | |||||
Java-Package | org.nuclet.mt940.jobfacade | Java-Regeln zur Steuerung von Jobs („Jobsteuerung“) | Klassen für Datenbankzugriffe | |||
org.nuclet.mt940.facadejob | Klassen für DatenbankzugriffeJava-Regeln zur Steuerung von Jobs („Jobsteuerung“) | |||||
| org.nuclet.mt940.logic |
| Geschäftslogik | |||
| org.nuclet.mt940.parser |
| MT940-Parserfunktionalität | |||
| org.nuclet.mt940.rule |
| Steuerung von Insert-/Update-/Delete-Events | |||
org.nuclet.mt940.statemodel | Definition von Statuswechseln (als Nuclet-Schnittstelle) | |||||
org.nuclet.mt940.wrapper | Wrapper-Klassen (als Nuclet-Schnittstelle) | |||||
Parameter | MT940 ImportMT940FileDirectory | Fristenjob für den automatisierten | legt das Eingangsverzeichnis der MT940- | ImportDateien fest | ||
MT940FileEncoding | bestimmt den Zeichensatz, der in den MT940-Dateien genutzt wird | |||||
MT940FileExtension | definiert die Dateinamenerweiterung der MT940-Dateien | |||||
Jobsteuerung | MT940 Import |
| Fristenjob für den automatisierten MT940-Import | |||
Strukturdefinition | Bank Transaction Type |
| Importstruktur für Entität | Bank Transaction Type |
| Importstruktur für Entität „Bank Transaction Type“ |
| Banking Business Line |
| Importstruktur für Entität „Banking Business Line“ | |||
| Debit/Credit Mark |
| Importstruktur für Entität „Debit/Credit Mark“ | |||
Nuclet-Abhängigkeit |
| allgemeine Helferfunktionalität | ||||
Objektimporte | Banking_Business_Line.csv |
| Stammdatensätze für Entität „Banking Business Line“ | |||
| Bank_Transaction_Type.csv |
| Stammdatensätze für Entität „Bank Transaction Type“ | |||
| Debit_Credit_Mark.csv |
| Stammdatensätze für Entität „Debit/Credit Mark“ | |||
Beispieldateien | Kontoauszug_001.sta |
| MT940-Importbeispiel | |||
| Kontoauszug_002.sta |
| MT940-Importbeispiel |
...
Java-Package-Struktur
Die Java-Regeln sind in vier sieben Packages unterteilt:
Regeln für maskengesteuerte Events (org.nuclet.mt940.rule)
Regeln zur Steuerung von System-Jobs (org.nuclet.mt940.job)
Regeln für die Geschäftslogik (org.nuclet.mt940.logic)
Regeln zum Einlesen und Verarbeiten von MT940-Dateien (org.nuclet.mt940.parser)
Die Abhängigkeiten der Packages sind in der folgenden Abbildung veranschaulicht.
- Regeln für Datenbankzugriffe (org.nuclet.mt940.facade)
- Wrapper-Klassen als Nuclet-Schnittstelle (org.nuclet.mt940.wrapper)
- Statuswechsel-Definitionen als Nuclet-Schnittstelle (org.nuclet.mt940.statemodel)
Die wesentlichen Abhängigkeiten der Packages sind in der folgenden Abbildung veranschaulicht. Die Abbildung beschränkt sich auf diejenigen Hauptpakete, die der Prozessteuerung dienen.
In dreien dieser vier Java-Packages stellt eine abstrakte Java-In dreien dieser vier Java-Packages stellt eine abstrakte Java-Klasse die Basisfunktionalität über die deklarierten und (größtenteils) definierten Methoden. Die Import-Prozesse sind entlang der vordeklarierten Methoden dieser abstrakten Klassen festgelegt und bedürfen für den normalen Anwendungsfall keiner weiteren Anpassung.
In den Paketen für Datenbankzugriffe (org.nuclet.mt940.facade) und Wrapper-Klassen (org.nuclet.mt940.wrapper) sind ebenfalls abstrakte Klassen definiert, deren konkrete Ausprägungen anwendungsspezifisch zu implementieren sind. Konkret bedeutet dies an dieser Stelle, Schnittstellen zum Zielnuclet herzustellen und anwendungsspezifisches Verhalten festzulegen (und zwar für Währung, Zahlungsbedingungen und Referenzen).
Java-Package | abstrakte Klassen | konkrete Implementierungen |
org.nucket.mt940. | ||
Java-Package | abstrakte Klassen | konkrete Implementierungen |
org.nucket.mt940.job | AbstractMT940Importer | MT940Importer |
org.nuclet.mt940.logic | AbstractMT940Logic | MT940Logic |
org.nuclet.mt940.parser | AbstractMT940Parser |
|
org.nuclet.mt940.rule | - | - |
Tabelle 2: Java-Package-Struktur
org.nuclet.mt940.facade |
|
|
org.nuclet.mt940.wrapper |
|
|
org.nuclet.mt940.statemodel | - |
Tabelle 2: Java-Package-Struktur
Anwendungsspezifische Anpassungen sollten nur umgesetzt werden, entweder
...
b) Eintragen der Referenzentität
Variante SINGLE: In der Entität „Bankumsatz“ („Bank Transaction“) verweist das Attribut „Referenz“ („Reference“) auf ein Objekt vom Typ der Dummy-Entität „MT940-Referenz“ („MT940 Reference“). Dieses Referenz-Attribut dient der Zuordnung von Bankumsätzen zu Rechnungen, etc., je nach Anwendungszweck. Bitte über den Entitäten-Wizard das Attribut dahingehend bearbeiten, dass die für Sie richtige Entität referenziert wird.
...
Für die Zuordnung von Referenzen (Kundenrechnungen, o.ä.) zu Bankumsätzen wird die Zwischenentität „Referenz-2-Bankumsatz“ („Bank Transaction Ref“) verwendet. Diese Entität dient der Abbildung dieser n-m-Beziehungen. In diesem Fall müsste das Attribut „Referenz“ also in dieser Entität so angepasst werden, wie es für die erste Variante beschrieben wurde.
...
Schritt 6: Layoutanpassungen
Nach Eintragen der verwendeten Referenzentität (Rechnung, o.ä.) in Schritt 5 kann das Layout dieser Referenzentität ergänzt werden. Empfohlen wird das Anlegen eines Unterformulars "Bankumsätze" (oder "Zahlungen", "Zahlungseingänge") in der verwendeten Referenzentität. Dieses Unterformular bildet dann alle zugeordneten Bankumsätze ab. Als verwendete Entität hier bitte also "Bankumsatz" auswählen, als Fremdschlüssel "reference".
Schritt 7: Einrichten eines Eingangsverzeichnisses
Einrichtung eines
Die Java-Regeln lassen sich über den System-Parameter MT940_REFERENCE_TYPE auf die zu bevorzugte und zu verwendende Variante abstimmen; siehe dazu auch Schritt 7 (Konfiguration der System-Parameter).
Info |
---|
Anmerkung: Eine weitere, denkbare Variante wäre, eine feste Anzahl (1-n) von Referenzen in der Entität Bankumsatz zuzulassen. Entität und Java-Regeln wären dementsprechend anzupassen. |
...
Nach Eintragen der verwendeten Referenzentität (Rechnung, o.ä.) in Schritt 5 kann das Layout dieser Referenzentität ergänzt werden. Empfohlen wird das Anlegen eines Unterformulars "Bankumsätze" (oder "Zahlungen", "Zahlungseingänge") in der verwendeten Referenzentität. Dieses Unterformular bildet dann alle zugeordneten Bankumsätze ab. Als verwendete Entität hier bitte also "Bankumsatz" auswählen, als Fremdschlüssel "reference".
Schritt 7: Einrichten eines Eingangsverzeichnisses
Einrichtung eines Dateiverzeichnis für den Eingang der MT940-Dateien. Das Verzeichnis sollte auf dem Server liegen
...
Parameter | Kurzbeschreibung | Beispiele |
---|---|---|
MT940FileDirectory | Dateiverzeichnis für den Eingang von MT940-Dateien |
|
MT940FileEncoding | Zeichensatz der einzulesenden MT940-Dateien | UTF-8, ISO-8859-1, ISO-8859-15, US_ASCII, UTF-16BE, UTF-16, UTF-16LE, etc. |
MT940FileExtension | Dateiendung der einzulesenden MT940-Dateien, alle anderen Dateitypen werden ignoriert | .sta, .mta |
...
Java-Package | Java-Klasse | Kurzbeschreibung | |
---|---|---|---|
a | org.nuclet.mt940.logic | MT940Logic | Auslesen aller beim Import und der Zuordnung zu berücksichtigenden Referenzobjekte in Methode getReferences() |
b | org.nuclet.mt940.rule | CheckBankTransactionRef | Behandlung der Referenzobjekte beim manuellen Zuordnen/Entfernen zu/von einem Bankumsatz in Methode checkReferences() |
c | org.nuclet.mt940.wrapper | CurrencyWrapperConditionsOfPaymentWrapper | Wrapper-Objekt für WährungenZahlungsbedingungen, d.h. hier wird eine Schnittstelle zur zu tatsächlich genutzten Währungsentität definiertverwendeten Zahlungsbedingungen definiert (optional) |
d | org.nuclet.mt940.facade | CurrencyFacade | Definition von notwendigen Datenbankzugriffen auf die tatsächlich genutzte Währungsentität |
e | org.nuclet.mt940.wrapper | ConditionsOfPaymentWrapper | |
f | org.nuclet.mt940.wrapper | ReferenceWrapper | |
g | org.nuclet.mt940.facade | ReferenceFacade | |
h | org.nuclet.mt940.statechange | PaymentReceived |
Tabelle 4: Anwendungsspezifische Anpassungen in Java-Regeln
Alle notwendigen Anpassungen werden nun der Reihe nach, Klasse für Klasse, erläutert.
a) MT940ImportJob
Es ist notwendig, die beiden Konstanten MT940_DIRECTORY und MT940_REFERENCE_TYPE für den eigenen Anwendungszweck zu konfigurieren:
MT940_DIRECTORY: legt das Eingangsverzeichnis der MT940-Dateien fest
- MT940_FILE_ENCODING: definiert den Zeichensatz der einzulesenden Dateien
- MT940_FILE_EXTENSION: definiert die Dateiendung der einzulesenden Dateien
MT940_REFERENCE_TYPE: definiert, ob einem Bankumsatz genau eine (SINGLE) oder beliebig viele (MULTIPLE) Referenzen zugeordnet werden können.
Codeblock | ||||
---|---|---|---|---|
| ||||
@Rule(name="MT940 Import Job", description="MT940 Import Job")
public class MT940ImportJob implements JobRule
{
// @replace!
//
// Configure the constants MT940_DIRECTORY, MT940_FILE_ENCODING, MT940_FILE_EXTENSION, MT940_REFERENCE_TYPE with your own values:
//
private static final String MT940_DIRECTORY = "/opt/nuclets/data/mt940";
private static final String MT940_FILE_ENCODING = "ISO-88591-15";
private static final String MT940_FILE_EXTENSION = ".sta";
private static final String MT940_REFERENCE_TYPE = "SINGLE"; // supported values are: { SINGLE, MULTIPLE }
(...)
}
|
Info |
---|
Anmerkung: Dieser Schritt wird in einer zukünfigen Version entfallen, d.h. sobald die neue Nuclos-API das Auslesen von System-Parametern unterstützt. Sobald dies der Fall ist, wird diese Anpasung über Schritt 7 geregelt (s.o.). |
b) MT940Importer
Die Methode processReference() wird während des Importvorgangs für jede einem Bankumsatz zugeordnete Referenz aufgerufen.
Wenn es sich in Ihrer Anwendung bei den Referenzen also z.B. um Kundenrechnungen handelt, dann ginge es an dieser Stelle um die Ausführung von Java-Code auf einer Kundenrechnung, zu der ein Bankumsatz gefunden wurde.
Denkbare Anweisungen hier wären bspw.
ein Markieren des Referenzobjekts als „zugeordnet“
ein Statuswechsel für das Referenzobjekt
das Auslösen von Berechnungsschritten, o.ä. auf dem Referenzobjekt
weitere Modifikationen auf dem Referenzobjekt oder auf Bezugsobjekten des Referenzobjekts (referenzierte Objekte, Unterformulareinträge, etc.)
Codeblock | ||||
---|---|---|---|---|
| ||||
/**
* Process the reference, that has been linked to a bank transaction, accordingly
*
* @note This method has to be filled with application specific behaviour,
* e.g. new calculations or further state changes on client billings, in case
* client billings were the objects to be referenced by bank transactions
*
* @param reference a BusinessObject that has just been linked to a bank transaction
*
* @throws BusinessException might be thrown by implementing classes in case of errors
* or other exceptions
*
*/
protected void processReference(final BusinessObject reference) throws BusinessException
{
// @replace!
//
// Insert your code segment here that is to be executed on the references business object,
// e.g. if your bank transactions are linked to client billings and the Nuclos-entity
// representing your client billings was named "Client Billing", you would go on operating
// an oject of type "ClientBilling" here:
//
// ClientBilling clientBilling = (ClientBilling)reference;
// clientBilling.setIsReferenced(Boolean.TRUE);
// clientBilling.setIncomingBankTransactionAt(new Date));
// clientBilling.setAmountOpen(...);
//
// StatemodelProvider.changeState(clientBilling, ClientBillingSM.State_N);
//
}
|
CurrencyWrapper | Wrapper-Objekt für Währungen, d.h. hier wird eine Schnittstelle zur tatsächlich genutzten Währungsentität definiert | ||
f | org.nuclet.mt940.wrapper | ReferenceWrapper | Wrapper-Objekt für Bankumsatz-Referenzen (Rechnungen, o.ä.) |
g | org.nuclet.mt940.facade | ReferenceFacade | Definition von notwendigen Datenbankzugriffen auf die tatsächlich verwendete Referenzentität |
Tabelle 4: Anwendungsspezifische Anpassungen in Java-Regeln
Alle notwendigen Anpassungen werden nun der Reihe nach, Klasse für Klasse, erläutert.
ac) MT940Logic
Die Methode getReferences() wird vor dem Importvorgang ausgeführt. Sie dient dazu, alle bereits existierenden Objekte einzulesen, die beim Import der Bankumsätze als mögliche Referenzobjekte herangezogen werden sollen (bspw. Kundenrechnungen, die noch offen sind und nicht bereits zu einem Bankumsatz zugeordnet wurden).
...