Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

...

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

...

JobsteuerungMT940 ImportFristenjob für den automatisierten ImportStrukturdefinition

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“

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

ParameterMT940FileDirectory legt das Eingangsverzeichnis der MT940-Dateien 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

org.nuclet.Common

 

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.

 

Image Removed

 

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

 

Image Added

 

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

  • MT940Parser
,
  • MT940SparkasseParser

org.nuclet.mt940.rule

-

-

Tabelle 2: Java-Package-Struktur

 

org.nuclet.mt940.facade
  • AbstractCurrencyFacade
  • AbstractReferenceFacade
  • CurrencyFacade
  • ReferenceFacade
org.nuclet.mt940.wrapper
  • AbstractConditionsOfPaymentWrapper
  • AbstractCurrencyWrapper
  • AbstractReferenceWrapper
  • ConditionsOfPaymentWrapper
  • CurrencyWrapper
  • ReferenceWrapper
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

  • unter Windows: "D:\nuclos\Data\MT940"
  • unter Linux: "/home/nuclos/Data/MT940"

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

corg.nuclet.mt940.wrapperCurrencyWrapperConditionsOfPaymentWrapperWrapper-Objekt für WährungenZahlungsbedingungen, d.h. hier wird eine Schnittstelle zur zu tatsächlich genutzten Währungsentität definiertverwendeten Zahlungsbedingungen definiert (optional)
dorg.nuclet.mt940.facadeCurrencyFacadeDefinition von notwendigen Datenbankzugriffen auf die tatsächlich genutzte Währungsentität
eorg.nuclet.mt940.wrapperConditionsOfPaymentWrapper 
forg.nuclet.mt940.wrapperReferenceWrapper 
gorg.nuclet.mt940.facadeReferenceFacade 
horg.nuclet.mt940.statechangePaymentReceived 

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
languagejava
titleorg.nuclet.mt940.job.MT940ImportJob
@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
languagejava
titleorg.nuclet.mt940.MT940Importer
/**
  * 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);
     //
 }

 

CurrencyWrapperWrapper-Objekt für Währungen, d.h. hier wird eine Schnittstelle zur tatsächlich genutzten Währungsentität definiert
forg.nuclet.mt940.wrapperReferenceWrapperWrapper-Objekt für Bankumsatz-Referenzen (Rechnungen, o.ä.)
gorg.nuclet.mt940.facadeReferenceFacadeDefinition 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).

...